
/**//// <summary>
/// LinkedListNode 自定義簡單鏈表的節點定義
/// </summary>
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; }
}
}


using System.Collections;
using System;

/**//// <summary>
/// LinkedList 自定義簡單鏈表
/// 為使自定義簡單鏈表實現內部迭代,使之實現IEnumerable接口
/// </summary>
public class LinkedList:IEnumerable

{
//首節點
private LinkedListNode _first;
public LinkedListNode First
{
get
{ return _first; }
}
//尾節點
private LinkedListNode _last;
public LinkedListNode Last
{
get
{ return _last; }
}
//添加新節點
public void AddLast(object node)
{
LinkedListNode newNode = new LinkedListNode(node);
if (_first == null)
{
_first = newNode;
_last = _first;
}
else
{
_last.Next = newNode;
_last = newNode;
}
}
//定義IEnumerable接口中的GetEnumerator方法
public IEnumerator GetEnumerator()
{
LinkedListNode current = _first;
while (current != null)
{
yield return current.Value;
current = current.Next;
//if (Convert.ToInt32(current.Value) == 1)
//{
// yield break; //停止迭代
//}
//else
//{
// yield return current.Value; //返回集合的一個元素
// current = current.Next;
//}
}
}
}


/**//* 調用^-^ */
LinkedList list1 = new LinkedList();
list1.AddLast(0);
list1.AddLast(1);
foreach(int i in list1)
{
Response.Write(i.ToString());
}

