在鏈表中,每個元素儲存元素的值,並儲存了元素的下一個和上一個元素的引用,現在建立這樣一個簡化鏈表類,分兩步,第一步是建立鏈表中元素的類型LinkedListNode類,然後建立鏈表類LindedList。在建立LinkedList類時使其繼承System.Collections命名空間下的介面IEnumerable,IEnumerable介面定義了GetEnumerator()方法,該方法返回IEnumerator類型,通過實現IEnumerable介面,可以用foreach語句迭代這個鏈表。Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace ConsoleApplication3
{
public class LinkedListNode
{
private object value;
public object Value
{
get { return value; }
}
public LinkedListNode(object value)
{
this.value = value;
}
private LinkedListNode next;
public LinkedListNode Next
{
get { return next; }
internal set { next = value; }
}
private LinkedListNode prev;
public LinkedListNode Prev
{
get { return prev; }
internal set { prev = value; }
}
}
public class LinkedList : IEnumerable
{
private LinkedListNode first;
private LinkedListNode last;
public LinkedListNode First
{
get { return first; }
}
public LinkedListNode Last
{
get { return last; }
}
public LinkedListNode AddLast(object node)
{
LinkedListNode newNode = new LinkedListNode(node);
if (First == null)
{
first = newNode;
last = first;
}
else
{
last.Next = newNode;
last = newNode;
}
return newNode;
}
public IEnumerator GetEnumerator()
{
LinkedListNode current = first;
while (current != null)
{
yield return current.Value;
current = current.Next;
}
}
}
class Program
{
static void Main(string[] args)
{
LinkedList list1 = new LinkedList();
list1.AddLast("Hello");
list1.AddLast("good");
list1.AddLast("9");
foreach (string i1 in list1)
{
Console.WriteLine(i1);
}
Console.ReadKey();
}
}
}