佇列特性:僅允許尾端加入 (EnQueue)、頭端刪除 (DeQueue),生活排隊即典型例子。底層用單向鏈結串列實作可避免順序表搬移元素的低效。
namespace Xianfen.Net.DataStructure
{
public class Queue<T>
{
protected SingleLinkedList<T> m_List;
public bool IsEmpty { get { return m_List.IsEmpty; } }
public int Count { get { return m_List.Count; } }
public Queue() { m_List = new SingleLinkedList<T>(); }
public Queue(T t) { m_List = new SingleLinkedList<T>(t); }
// 出佇列:取得並移除尾端 (對應單向鏈結串列尾端)
public T DeQueue()
{
T t = m_List.GetTail();
m_List.RemoveTail();
return t;
}
// 進佇列:加入頭端 (對應單向鏈結串列頭端)
public void EnQueue(T t)
{
m_List.AddHead(t);
}
public T GetFront() { return m_List.GetTail(); } // 隊頭
public T GetRear() { return m_List.GetHead(); } // 隊尾
}
}
Queue<int> q1 = new Queue<int>(); // 奇數隊列
Queue<int> q2 = new Queue<int>(); // 偶數隊列
Random rnd = new Random();
for (int i = 0; i < 20; i++)
{
int value = rnd.Next();
if (value % 2 != 0) q1.EnQueue(value);
else q2.EnQueue(value);
}
while (!q1.IsEmpty && !q2.IsEmpty)
{
Console.WriteLine("奇偶數對:{0},{1}", q1.DeQueue(), q2.DeQueue());
}
奇偶數對:1001667163,570500228 奇偶數對:703882551,1134267770 奇偶數對:1938115369,486438246 奇偶數對:1471693833,717831946 奇偶數對:429728181,678751398 奇偶數對:1894142101,2052360200 奇偶數對:1289719185,1630602020
SingleLinkedList 為內部儲存,AddHead 入隊、RemoveTail 出隊,符合 FIFO。EnQueue、DeQueue、GetFront、GetRear、Count、IsEmpty。