資料結構(C#):佇列

kevin_god發表於2013-10-29
佇列的特點是先進先出,如同日常生活中的排隊。佇列有加入隊尾,從隊頭刪除元素,取得隊尾元素,取得隊頭元素,取得佇列長度,判斷佇列是否為空等操作。
佇列也可以可以用順序表、連結串列實現,但佇列最好不要用順序表實現,因為元素加入佇列和刪除元素中的一種操作總會引起全部元素的移動,效率極低(迴圈佇列除外)。
佇列的實現非常簡單,下面用前面介紹的單連結串列實現。
程式碼:
/*
* File     :   Queue.cs
* Author   :   Zhenxing Zhou
* Date     :   2008-12-07
* Blog     :  
http://www.xianfen.net/
*/
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();
        }
    }
}

2.應用示例
也是一個非常無聊的演示程式:顯示隨機生成整數的奇偶數對。
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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17140602/viewspace-775281/,如需轉載,請註明出處,否則將追究法律責任。

相關文章