博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 链表 --增 -删-反转-删除最小值
阅读量:7117 次
发布时间:2019-06-28

本文共 3948 字,大约阅读时间需要 13 分钟。

1.

Node.cs

namespace 链表{  public class Node
{ public T Data; //这个就是地址 public Node
Next; //构造函数用来初始化 public Node() { Data = default(T); Next = null; } public Node(T value) { Data = value; Next = null; } }}

2.LinkList.cs

namespace 链表{   //一般链表都是有头部节点的,简称头结点,头结点不参与运算   public class LinkList
{ private Node
_head; private int _count; public LinkList() { _head = new Node
(); _count = 0; } public void AddItem(Node
newNode) { Node
tmpNode = _head; //找到头结点 while (tmpNode.Next != null) //循环找到最后节点 { tmpNode = tmpNode.Next; //一直下移 } tmpNode.Next = newNode; //将最后节点和即将插入的节点连接 _count++; } public int GetLength() { return _count; } public void Insert(int index, Node
newNode) //插 { if(index<0||index>_count) { Console.WriteLine("Over"); return; } Node
tmpNode = _head; for (int i = 0; i < index; i++) { tmpNode = tmpNode.Next; } //tmpNode (index的前一个节点) newNode.Next = tmpNode.Next; tmpNode.Next = newNode; _count++; } //第一个为index,第二个为value public void ShowItem(Action
ac) { if (_count ==0) { Console.WriteLine("空"); return; } Node
tmpNode = _head.Next; for (int i = 0; i < _count; i++) { ac(i, tmpNode.Data); tmpNode = tmpNode.Next; } } public T RemoveAt(int index) { T returnValue = default(T); // 定义一个data的返回值 if (index < 0 || index >= _count)//判断是否出界 { Console.WriteLine("error"); goto returnTip; } Node
tmpNode = _head; //删除节点的前一个节点 for (int i = 0; i < index; i++)//循环走 { tmpNode = tmpNode.Next; } Node
deleteNode = tmpNode.Next; //要删除的节点 tmpNode.Next = tmpNode.Next.Next;//牵手删除节点的后一个节点 deleteNode.Next = null;//不让其连接 _count--; returnValue = deleteNode.Data;//返回删除节点的数据data returnTip: return returnValue; } public void Reverse() //链表反转 { if (_count < 1) { Console.WriteLine("链表长度不足"); return; } Node
x1, x2; x2 = _head.Next; _head.Next = null; while (x2 != null) { x1 = x2.Next; x2.Next = _head.Next; _head.Next = x2; x2 = x1; } } public T RemoveMinDemo(Func
,Node
,Boolean> _func) //删除最小值 { Node
deletePreMin, deleteMin, PreMin, Min; deletePreMin = PreMin = _head; deleteMin = Min = _head.Next; while (Min != null) { if (_func(Min,deleteMin)) { deletePreMin = PreMin; deleteMin = Min; } PreMin = PreMin.Next; Min = Min.Next; } deletePreMin.Next = deletePreMin.Next.Next; deleteMin.Next = null; _count--; return deleteMin.Data; } public void Clear() { _head.Next = null; _count = 0; } }}

3.Program.cs

namespace 链表{    class Program    {     public static bool SH(Node
a, Node
b) { if (a.Data > b.Data) { return false; } return true; } public static void Show(int index, int value) { Console.WriteLine("第{0}个元素是{1}",index+1,value); } static void Main(string[] args) { LinkList
linklist = new LinkList
(); linklist.AddItem(new Node
(9)); linklist.AddItem(new Node
(3)); linklist.AddItem(new Node
(10)); linklist.AddItem(new Node
(4)); linklist.AddItem(new Node
(21)); linklist.AddItem(new Node
(100)); linklist.Reverse();//反转 //9 3 10 4 21 100 linklist.RemoveMinDemo(SH); //删除最小值 linklist.ShowItem(Show); Console.WriteLine(linklist.GetLength()); Console.ReadLine(); } }}

输出结果: 

5为链表的长度

 

转载于:https://www.cnblogs.com/lk95/p/9909604.html

你可能感兴趣的文章
Web 开发学习笔记(4) --- 重定向与HSTS
查看>>
通过手机物理返回键实现弹出层的隐藏
查看>>
Spring Cloud Alibaba基础教程:Nacos配置的多文件加载与共享配置
查看>>
解决mac下webstorm编辑器识别less的问题
查看>>
原生JS 实现复杂对象深拷贝(对象值包含函数)
查看>>
优化体系结构 - 算法外置优化计算结构
查看>>
JS中的call、apply、bind方法详解
查看>>
启动时间知多少?8款音视频类应用测评报告分析
查看>>
码农张的Bug人生 - 见面之礼
查看>>
JS异步编程之Promise
查看>>
【算法专栏】-- 谈谈时间复杂度
查看>>
元数据治理框架Atlas研究——JanusGraph图数据库对象关系映射
查看>>
力扣(LeetCode)155
查看>>
sas 做 titanic 未完待续
查看>>
区块链是一个公共数据库,要放在一个块内
查看>>
jqGrid的rowNum属性默认值、-1情况的介绍
查看>>
一步步学会用docker部署应用(nodejs版)
查看>>
分享10个免费H5模版(主题)资源网站
查看>>
RabbitMQ预研
查看>>
机器学习之分类结果的评价
查看>>