/// <summary> /// LinkedListNode<T> 自定义简单链表的节点定义 /// </summary> public class LinkedListNode<T> { //当前节点值 private T _value; public T Value { get { return _value; } } //构造函数 public LinkedListNode(T value) { this._value = value; } //下一个节点 private LinkedListNode<T> _next; public LinkedListNode<T> Next { get { return _next; } internal set { _next = value; } } //当前节点 private LinkedListNode<T> _prev; public LinkedListNode<T> Prev { get { return _prev; } internal set { _prev = value; } } } using System.Collections.Generic; using System; using System.Collections; /// <summary> /// LinkedList<T> 自定义简单链表 /// 为使自定义简单链表实现内部迭代,使之实现IEnumerable接口 /// </summary> public class LinkedList<T> : IEnumerable<T> { //首节点 private LinkedListNode<T> _first; public LinkedListNode<T> First { get { return _first; } } //尾节点 private LinkedListNode<T> _last; public LinkedListNode<T> Last { get { return _last; } } //添加新节点 public void AddLast(T node) { LinkedListNode<T> newNode = new LinkedListNode<T>(node); if (_first == null) { _first = newNode; _last = _first; } else { _last.Next = newNode; _last = newNode; } } //定义IEnumerable接口中的GetEnumerator方法 public IEnumerator<T> GetEnumerator() { LinkedListNode<T> current = _first; while (current != null) { yield return current.Value; current = current.Next; } } /* 饿。。。这个地方暂时没搞明白@-@ */ IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } /* 调用 ^-^ */ LinkedList<int> list1 = new LinkedList<int>(); list1.AddLast(0); list1.AddLast(1); foreach(int i in list1) { Response.Write(i.ToString()); }