(1)自定义泛型链表类。
public class GenericList<T> { private class Node { //当前节点值 private T data; public T Data { get { return data; } set { data = value; } } //节点的下一个节点 private Node next; public Node Next { get { return next; } set { next = value; } } //节点的上一个节点 private Node last; public Node Last { get { return last; } set { last = value; } } public Node(T t) { data = t; next = null; } } private Node firstNode; private Node lastNode; public void AddNode(T t) { Node node = new Node(t); node.Last = lastNode; if (lastNode != null) lastNode.Next = node; lastNode = node; if (firstNode == null) { firstNode = node; } } //要在自定义泛型集合上迭代 //必须实现该接口 public IEnumerator<T> GetEnumerator() { Node current = firstNode; while (current != null) { //yield return表达式以枚举对象返回 yield return current.Data; current = current.Next; } } }
(2)自定义泛型链表类调用。
class GenericListTestTwo { static void Main() { // 类型参数为int GenericList<int> list = new GenericList<int>(); for (int a = 0; a < 5; a++) { list.AddNode(a); } foreach (int i in list) { System.Console.WriteLine(i); } //类型参数为string GenericList<string> strList = new GenericList<string>(); strList.AddNode("First Node"); strList.AddNode("Second Node"); foreach(string s in strList) { System.Console.WriteLine(s); } Console.Read(); } }
输出如下: