和棧相反,隊列是先進先出的線性表,它只允許在表的一端進行插入,而在另一端刪除元素。在隊列中,允許插入的一端叫做隊尾,允許刪除的一端稱為隊頭。在隊列的實現過程中主要有兩個操作,即入隊和出隊。
(1)入隊就是在隊列的尾部添加數據,隊列數據個數加一,尾指針後移。
(2)出隊就是在隊列的頭部取的數據後,然後刪除該數據,頭指針後移。
具體代碼如下:
/// <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;
}
}
}