链表,Enumerator
1.
public class LinkedListNode
{
public LinkedListNode(object value)
{
this.Value = value;
}
public object Value { get; private set; }
public LinkedListNode Next { get; internal set; }
public LinkedListNode Prev { get; internal set; }
}
2.
public class LinkedList : IEnumerable
{
public LinkedListNode First { get; private set; }
public LinkedListNode Last { get; private set; }
public LinkedListNode AddLast(object node)
{
var newNode = new LinkedListNode(node);
if (null == First)
{
First = newNode;
newNode.Prev = Last;
Last = First;
}
else
{
LinkedListNode previous = Last;
Last.Next = newNode;
Last = newNode;
Last.Prev = previous;
}
return newNode;
}
public IEnumerator GetEnumerator()
{
LinkedListNode current = First;
while (null != current)
{
yield return current.Value;
current = current.Next;
}
}
}
3.使用时:
LinkedList lstLinked = new LinkedList();
lstLinked.AddLast(1);
lstLinked.AddLast(2);
lstLinked.AddLast(3);
foreach (int i in lstLinked)
{
Response.Write(i + "<br/>");
}
浙公网安备 33010602011771号