程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 數據結構(C#):隊列

數據結構(C#):隊列

編輯:關於C#

隊列的特點是先進先出,如同日常生活中的排隊。隊列有加入隊尾,從隊頭刪除元素,取得隊尾元素 ,取得隊頭元素,取得隊列長度,判斷隊列是否為空等操作。

隊列也可以可以用順序表、鏈表實現,但隊列最好不要用順序表實現,因為元素加入隊列和刪除元素 中的一種操作總會引起全部元素的移動,效率極低(循環隊列除外)。

隊列的實現非常簡單,下面用前面介紹的單鏈表實現。

代碼:

/*
* 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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved