隊列是先進先出(FIFO)的線性表,僅允許在隊尾插入、隊頭刪除。兩大核心操作:
以下代碼展示封裝Clist鏈表類的隊列實現:
///
/// 隊列類
///
public class CQueue
{
private Clist m_List;
public CQueue()
{
m_List = new Clist();
}
/// 入隊
public void EnQueue(int DataValue)
{
m_List.Append(DataValue); // 尾部添加
}
/// 出隊
public int DeQueue()
{
if (!IsNull())
{
m_List.MoveFirst();
int QueValue = m_List.GetCurrentValue();
m_List.Delete(); // 刪除頭節點
return QueValue;
}
return int.MaxValue; // 空隊列標識
}
/// 判斷是否為空
public bool IsNull() => m_List.IsNull();
/// 清空隊列
public void Clear() => m_List.Clear();
/// 獲取元素個數
public int QueueCount => m_List.ListCount;
}
關鍵點:
Clist處理節點管理,體現組合復用原則。int.MaxValue作為空隊列標識,實際項目中建議拋出異常或使用Nullable<int>。ConcurrentQueue<T>。