資料結構(C#):佇列
佇列的特點是先進先出,如同日常生活中的排隊。佇列有加入隊尾,從隊頭刪除元素,取得隊尾元素,取得隊頭元素,取得佇列長度,判斷佇列是否為空等操作。
佇列也可以可以用順序表、連結串列實現,但佇列最好不要用順序表實現,因為元素加入佇列和刪除元素中的一種操作總會引起全部元素的移動,效率極低(迴圈佇列除外)。
佇列的實現非常簡單,下面用前面介紹的單連結串列實現。
程式碼:
2.應用示例
也是一個非常無聊的演示程式:顯示隨機生成整數的奇偶數對。
佇列也可以可以用順序表、連結串列實現,但佇列最好不要用順序表實現,因為元素加入佇列和刪除元素中的一種操作總會引起全部元素的移動,效率極低(迴圈佇列除外)。
佇列的實現非常簡單,下面用前面介紹的單連結串列實現。
程式碼:
/*
* 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();
}
}
}
* 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());
}
某次執行結果: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
奇偶數對:703882551,1134267770
奇偶數對:1938115369,486438246
奇偶數對:1471693833,717831946
奇偶數對:429728181,678751398
奇偶數對:1894142101,2052360200
奇偶數對:1289719185,1630602020
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17140602/viewspace-775281/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料結構-佇列資料結構佇列
- 【資料結構-----佇列】資料結構佇列
- 資料結構 - 佇列資料結構佇列
- C#資料結構-執行緒安全佇列C#資料結構執行緒佇列
- Java版-資料結構-佇列(陣列佇列)Java資料結構佇列陣列
- 資料結構之「佇列」資料結構佇列
- 資料結構-佇列-樹資料結構佇列
- 資料結構—棧/佇列資料結構佇列
- 資料結構-佇列、棧資料結構佇列
- Java版-資料結構-佇列(迴圈佇列)Java資料結構佇列
- JavaScript資料結構之-佇列JavaScript資料結構佇列
- 資料結構之佇列(Queue)資料結構佇列
- JavaScript資料結構03 – 佇列JavaScript資料結構佇列
- JavaScript資料結構之佇列JavaScript資料結構佇列
- js資料結構--佇列(queue)JS資料結構佇列
- 資料結構-棧與佇列資料結構佇列
- 資料結構—棧和佇列資料結構佇列
- JavaScript資料結構03 - 佇列JavaScript資料結構佇列
- 資料結構(棧和佇列)資料結構佇列
- 資料結構筆記——佇列資料結構筆記佇列
- 【資料結構】--棧和佇列資料結構佇列
- 無鎖資料結構:佇列資料結構佇列
- 資料結構:棧與佇列資料結構佇列
- Python資料結構——佇列Python資料結構佇列
- C++資料結構-佇列C++資料結構佇列
- 資料結構與演算法——佇列(環形佇列)資料結構演算法佇列
- 重學資料結構之佇列資料結構佇列
- 資料結構之「雙端佇列」資料結構佇列
- 資料結構學習之佇列資料結構佇列
- JS資料結構學習:佇列JS資料結構佇列
- js實現資料結構--佇列JS資料結構佇列
- 重學資料結構(三、佇列)資料結構佇列
- PTA 雙端佇列 資料結構佇列資料結構
- 資料結構之棧和佇列資料結構佇列
- JavaScript資料結構之陣列棧佇列JavaScript資料結構陣列佇列
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- 【資料結構】佇列(順序佇列、鏈佇列)的JAVA程式碼實現資料結構佇列Java
- 【資料結構】棧(Stack)和佇列(Queue)資料結構佇列