关于链表操作,在C#当中微软已经提供了一个LinkedList
创新互联是一家集网站建设,孝昌企业网站建设,孝昌品牌网站建设,网站定制,孝昌网站建设报价,网络营销,网络优化,孝昌网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
这里我提供一段代码,这是在论坛里面有人提问时给出的代码,它实现了自定义链表的操作(读者可以在此基础上进一步完善)。因为这段代码涉及一些C#技巧,所以贴出来给初学者学习C#提供一点参考。
实体类:
////// 学生类 /// public class Student { public string Name { get; set; } public int Age { get; set; } public Student(string name, int age) { this.Name = name; this.Age = age; } public override string ToString() { return "\r\n" + this.Name + ":年龄" + this.Age + "岁"; } }
链表节点类:
////// 节点类 /// ///泛型 public class Node{ public T Data { get; set; } public Node Next { get; set; } public Node(T data) { this.Data = data; this.Next = null; } /// /// 附加节点 /// /// 新的节点 public void Append(NodenewNode) { //如果下一节点为null,则将新的节点指向下一节点 if (this.Next == null) { this.Next = newNode; } //如果下一节点不为null,则直接附加到下一节点 else { this.Next.Append(newNode); } } public override string ToString() { string output = this.Data.ToString(); if (this.Next != null) { output += " " + this.Next.ToString(); } return output; } }
链表类:
////// 链表类 /// ///泛型 public class LinkedList{ Node headNode = null;//头节点 /// /// 追加节点方法 /// /// public void Add(T data) { if (headNode == null) { headNode = new Node(data); } else { headNode.Append(new Node (data)); } } /// /// 索引器,通过索引获取节点 /// /// ///public T this[int index] { get { int temp = 0; Node node = headNode; while (node != null && temp <= index) { if (temp == index) { return node.Data; } else { node = node.Next; } temp++; } return default(T); } } public override string ToString() { if (headNode != null) { return this.headNode.ToString(); } return string.Empty; } }
主函数:
class Program { static void Main(string[] args) { LinkedListintList = new LinkedList (); Enumerable.Range(0, 5).ToList ().ForEach(x => intList.Add(x)); Console.WriteLine("整型的内容为:{0}\r\n", intList); LinkedList students = new LinkedList (); students.Add(new Student("张三", 20)); students.Add(new Student("李四", 22)); students.Add(new Student("王五", 21)); Console.WriteLine(students[1].Name + "的年龄为:" + students[1].Age); Console.ReadLine(); } }
最后附录一下微软官方的链表类。https://msdn.microsoft.com/zh-cn/library/he2s3bh7(v=vs.110).aspx。