博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用C#实现单链表(插入,在第i个前插,在第i个后插)
阅读量:5842 次
发布时间:2019-06-18

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

初学C#记录历程,记录心情。

 
在学习的过程中严重参考了前辈们在网上的分享,当然也不忘有自己的细微思想在里面,写在这里主要是对自己由不懂到能独立写下来的纪念。如有冒犯,还请原谅。

在接口IList中增加:

      void Insert(T item, int i);//在i后插

      void InsertBefore(T item, int i);//在i前插 

节点类和链表类参考前篇。

在链表类LinkList里面直接增加方法。

在第i个数前面插入:

View Code
1                 ///  2                 /// 插入数据到链表(i前插) 3                 ///  4                 /// 插入的结点的数据 5                 /// 在第i个位置前插入结点 6  7                 public void InsertBefore(T item, int i)//i前插 8                 { 9                     LinkNode
node = this.head;10 LinkNode
nodeTemp; //临时结点11 LinkNode
InsertNode = new LinkNode
(item, null); //创建一个要插入的结点12 if (this.head == null && i == 1) //空链表时,插入13 {14 this.head = InsertNode;15 return;16 }17 if (i < 1 || i > this.GetLength() || (this.head == null && i != 1)) //异常下的处理18 {19 Console.WriteLine("Error,the location you want to insert in is wrong");20 return;21 }22 23 if(this.head!=null&&i==1) //在第一个结点前插入24 {25 26 this.head=InsertNode;27 InsertNode.Next =node;28 return;29 }30 31 //下面代码才是主要的,在第i个位置前面插入32 int j = 1;33 while(node!=null&j
=234 {35 node = node.Next;36 j++;37 }38 nodeTemp = node.Next;39 node.Next = InsertNode;40 InsertNode.Next = nodeTemp;41 42 }

在第i个数后面插入:

View Code
1                 ///  2                 /// 插入数据到链表(i后插) 3                 ///  4                 /// 要插入的元素 5                 /// 在第i个位置的后面插入新节点 6                 public void Insert(T item, int i) 7                 { 8                     LinkNode
node=this.head; 9 LinkNode
nodeTemp; //临时结点10 LinkNode
insertNode=new LinkNode
(item,null); //创建一个要插入的结点11 12 if (this.head == null && i == 1) //空链表时,插入13 {14 this.head = insertNode;15 return;16 }17 18 if (i < 1 || i > this.GetLength()||(this.head==null&&i!=1)) //异常下的处理19 {20 Console.WriteLine("Error,the location you want to insert in is wrong");21 return;22 }23 24 if (i == this.GetLength()) //如果是在末尾插入, i〉=125 {26 while (node.Next != null)27 {28 node = node.Next;29 }30 node.Next = insertNode;31 return;32 }33 34 //下面代码才是主要的,在第i个位置后插入35 int j = 1;36 while (node != null && j < i)//寻找第i个结点. i>=237 {38 node = node.Next;39 j++;40 }41 nodeTemp = node.Next;42 node.Next = insertNode;43 insertNode.Next = nodeTemp;44 45 }

验证插入是否正确:

View Code
1  static void Main(string[] args) 2         { 3                LinkList
MyList = new LinkList
(); 4 LinkNode
node = new LinkNode
(); 5 LinkList
.AddPosition HeadInsert = LinkList
.AddPosition.Head; 6 7 //验证插入元素 8 MyList.Add(6, HeadInsert); 9 MyList.Add(7, HeadInsert);10 MyList.Add(8, HeadInsert);11 12 MyList.Insert(99, 2);13 MyList.InsertBefore(999, 2);14 15 node = MyList.Head;16 node = PrintData(node);17 18 Console.ReadLine(); 19 }20 21 private static LinkNode
PrintData(LinkNode
node)22 {23 while (node != null)24 {25 Console.WriteLine("The data of List are:{0}", node.Data);26 node = node.Next;27 }28 return node;29 }

 

 

转载于:https://www.cnblogs.com/bloomalone/archive/2013/01/15/2861309.html

你可能感兴趣的文章
Android学习笔记—第一章 搭建开发环境
查看>>
APUE读书笔记-12线程控制-03线程属性
查看>>
Linux shell 学习 自己的第一个脚本
查看>>
mysql(三)
查看>>
MySQL数据库主从同步(单台2实例)
查看>>
SQLSERVER ISNULL 函数
查看>>
select,epoll,poll比较
查看>>
Python脚本远程批量执行命令
查看>>
Cisco2811配置Qos实现带宽分流
查看>>
存储环境下HANA运行环境配置
查看>>
【学神-RHEL7】1-15-磁盘加密和RAID配置
查看>>
shell command:echo
查看>>
SSH服务
查看>>
Exchange Server 2010 公共文件夹创建配置
查看>>
svn学习之二(svn+httpd 部署脚本)
查看>>
学会它系统崩溃不求人
查看>>
sed命令
查看>>
Longest Substring Without Repeating Charactersdf
查看>>
万变不离CHP 天霆“交付”多元化应用
查看>>
ToString()使用方法汇总(C#)
查看>>