链表定义:
public class Node { public object Element; //要把链接指向下一个节点,使用索引来做这个链接,需要把链接设置为Node类型 public Node Link; public Node() { Element = null; Link = null; } public Node(object theElement) { Element = theElement; Link = null; } }
链表操作类:
public class LinkedList { //头结点 protected Node Header; public LinkedList() { Header = new Node("header"); } private Node Find(object item) { Node current = new Node(); current = Header; while (current.Element != item) { current = current.Link; } return current; } public void Insert(object newItem, object after) { Node current = new Node(); Node newNode = new Node(newItem); current = Find(after); newNode.Link = current.Link; current.Link = newNode; } //遍历链表,停在每个节点处查看下一个节点的element字段是否有需要移除的数据项 private Node FindPrevious(object n) { Node current = Header; while (!(current.Link == null) && (current.Link.Element != n)) { current = current.Link; } return current; } public void Remove(object n) { Node p = FindPrevious(n); if (!(p.Link == null)) { p.Link = p.Link.Link; } } public void PrintList() { Node current = new Node(); current = Header; while (!(current.Link == null)) { Console.WriteLine(current.Link.Element); current = current.Link; } } }