首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C#隊列實現詳解:基於鏈表的先進先出數據結構

     編輯:關於C語言

隊列核心原理

隊列是先進先出(FIFO)的線性表,僅允許在隊尾插入、隊頭刪除。兩大核心操作:

  • 入隊:尾部添加數據,元素計數+1,尾指針後移。
  • 出隊:頭部取出數據並刪除,頭指針後移。

基於自定義鏈表的隊列實現

以下代碼展示封裝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>。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved