在實現堆棧類之後,我們來實現隊列類,其實隊列也是鏈表的擴充,它其實是一種特殊的鏈表,如堆棧一樣,它和堆棧的不同在於,堆棧採用的是先進後出原則,而對列採用的是先進先出原則。什麼是先進後出呢?在日常生活中也到處可見它,比如:買火車票,大家都要排隊,先來的先買票,後來的在後面排隊,在隊伍中隨便插入是不合法的。等到前面買完之後,自己才可以買票。當然這隻是個小執行個體,隊列在程式設計中是基礎的編程技術,現在我們來用才C#實現它。如:是隊列入隊和出隊的操作過程。
1 在入隊過程中: 就是在隊列的尾部添加資料,隊列資料個數加一,尾指標後移。
2 在出隊過程中:就是在隊列的頭部取的資料後,然後刪除該資料,頭指標後移。
在下面的程式中用到前面我們編寫的list 類 ( C#資料結構篇(1 鏈表類)),對鏈表進行操作就可以輕鬆的實現隊列,具體實現如下:
using System;
namespace List
{
/// <summary>
/// 隊列類
/// </summary>
public class CQueue
{
private Clist m_List;
public CQueue()
{
//建構函式
//這裡使用到前面編寫的List
m_List=new Clist ();
}
/// <summary>
/// 入隊
/// </summary>
public void EnQueue(int DataValue)
{
//功能:排入佇列,這裡使用List 類的Append 方法:
//尾部添加資料,資料個數加1
m_List.Append (DataValue);
}
/// <summary>
/// 出隊
/// </summary>
public int DeQueue()
{
//功 能:出隊
//傳回值: 2147483647 表示為空白隊列無返回
int QueValue;
if (! IsNull())
{
//不為空白的隊列
//移動到隊列的頭
m_List.MoveFrist ();
//取得當前的值
QueValue= m_List.GetCurrentValue ();
//刪除出隊的資料
m_List.Delete ();
return QueValue;
}
return 2147483647;
}
/// <summary>
/// 判斷隊列是否為空白
/// </summary>
public bool IsNull()
{
//功能:判斷是否為空白的隊列
return m_List.IsNull ();
}
/// <summary>
/// 清空隊列
/// </summary>
public void Clear()
{
//清空鏈表
m_List.Clear ();
}
/// <summary>
/// 取得隊列的資料個數
/// </summary>
public int QueueCount
{
get
{
//取得隊列的個數
return m_List.ListCount ;
}
}
}
}