我有以下列表:添加索引,以自定義列表
public class MyQueue : IEnumerable<int>
{
private Node Head { get; set; }
private Node Tail { get; set; }
public MyQueue()
{
Head = null;
}
public void Add(int item)
{
Enqueue(item);
}
public void Enqueue(int item)
{
var newItem = new Node { Data = item };
if (Head == null)
{
Head = newItem;
Tail = newItem;
return;
}
Node last = Tail;
last.Next = newItem;
Tail = newItem;
}
public IEnumerator<int> GetEnumerator()
{
Node current = Head;
while (current != null)
{
yield return current.Data;
current = current.Next;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
private class Node
{
public int Data;
public Node Next;
}
}
還有其他的方法,但他們並不在這種情況下無所謂。 我想添加索引到這個列表。
所以我可以這樣做:
var q = new MyQueue() {1, 2};
Console.WriteLine(q[0]); //1
我需要做什麼來實現?
q [0]返回值2而不是1 :)否則,它真的很聰明! – CasperT 2009-09-30 16:08:18
你確定嗎?適用於我的機器。對於索引== 0跳過(0)沒有「沒有」。 – mancaus 2009-09-30 16:14:45
我的壞!我在測試用例中進一步測試了代碼(還有很多其他的東西)。 它的作品完美,我喜歡聰明的執行 – CasperT 2009-09-30 16:17:55