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

C#單向鏈表進階操作(六):降序插入算法實現

     編輯:關於C語言

降序插入邏輯

在已按降序排列的鏈表中插入新值,保持序列不增特性。核心步驟:

  1. 空表直接追加。
  2. 新值大於頭節點值,插入頭部。
  3. 遍歷尋找首個當前節點值 < 新值的位置插入。
  4. 遍歷至末尾仍未找到,追加至尾部。

完整代碼實現

/// 降序插入
/// 待插入數值
public void InsertUnAscending(int InsertValue)
{
    if (IsNull())
    {
        Append(InsertValue);
        return;
    }
    
    MoveFirst();
    if (InsertValue > GetCurrentValue())
    {
        Insert(InsertValue);
        return;
    }
    
    while (true)
    {
        if (InsertValue > GetCurrentValue())
        {
            Insert(InsertValue);
            break;
        }
        if (IsEOF())
        {
            Append(InsertValue);
            break;
        }
        MoveNext();
    }
}

輔助方法假設

  • IsNull():判斷鏈表為空。
  • MoveFirst():當前指針移至頭節點。
  • GetCurrentValue():獲取當前節點數值。
  • Insert(value):在當前節點前插入。
  • Append(value):尾部追加。
  • IsEOF():判斷是否到達尾部。
  • MoveNext():當前指針後移。

複雜度分析

  • 時間複雜度:O(n),最壞情況遍歷全表。
  • 空間複雜度:O(1),僅使用常數額外空間。

同理可實現升序插入(InsertAscending),只需調整比較方向。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved