关于链表操作,在C#当中微软已经提供了一个LinkedList<T>的数据结构,通过这个类提供的一系列方法就能够实现链表操作。

这里我提供一段代码,这是在论坛里面有人提问时给出的代码,它实现了自定义链表的操作(读者可以在此基础上进一步完善)。因为这段代码涉及一些C#技巧,所以贴出来给初学者学习C#提供一点参考。

实体类:

///<summary>///学生类///</summary>publicclassStudent{publicstringName{get;set;}publicintAge{get;set;}publicStudent(stringname,intage){this.Name=name;this.Age=age;}publicoverridestringToString(){return"\r\n"+this.Name+":年龄"+this.Age+"岁";}}

链表节点类:

///<summary>///节点类///</summary>///<typeparamname="T">泛型</typeparam>publicclassNode<T>{publicTData{get;set;}publicNode<T>Next{get;set;}publicNode(Tdata){this.Data=data;this.Next=null;}///<summary>///附加节点///</summary>///<paramname="newNode">新的节点</param>publicvoidAppend(Node<T>newNode){//如果下一节点为null,则将新的节点指向下一节点if(this.Next==null){this.Next=newNode;}//如果下一节点不为null,则直接附加到下一节点else{this.Next.Append(newNode);}}publicoverridestringToString(){stringoutput=this.Data.ToString();if(this.Next!=null){output+=""+this.Next.ToString();}returnoutput;}}

链表类:

///<summary>///链表类///</summary>///<typeparamname="T">泛型</typeparam>publicclassLinkedList<T>{Node<T>headNode=null;//头节点///<summary>///追加节点方法///</summary>///<paramname="data"></param>publicvoidAdd(Tdata){if(headNode==null){headNode=newNode<T>(data);}else{headNode.Append(newNode<T>(data));}}///<summary>///索引器,通过索引获取节点///</summary>///<paramname="index"></param>///<returns></returns>publicTthis[intindex]{get{inttemp=0;Node<T>node=headNode;while(node!=null&&temp<=index){if(temp==index){returnnode.Data;}else{node=node.Next;}temp++;}returndefault(T);}}publicoverridestringToString(){if(headNode!=null){returnthis.headNode.ToString();}returnstring.Empty;}}

主函数:

classProgram{staticvoidMain(string[]args){LinkedList<int>intList=newLinkedList<int>();Enumerable.Range(0,5).ToList<int>().ForEach(x=>intList.Add(x));Console.WriteLine("整型的内容为:{0}\r\n",intList);LinkedList<Student>students=newLinkedList<Student>();students.Add(newStudent("张三",20));students.Add(newStudent("李四",22));students.Add(newStudent("王五",21));Console.WriteLine(students[1].Name+"的年龄为:"+students[1].Age);Console.ReadLine();}}

最后附录一下微软官方的链表类。https://msdn.microsoft.com/zh-cn/library/he2s3bh7(v=vs.110).aspx。