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

C#單向鏈表基礎操作(二):尾部追加與節點刪除實現

     編輯:關於C語言

尾部追加節點

向鏈表末尾添加數據,分首次添加(建立頭尾節點)與非首次添加(維護尾指針)兩種情況:

/// 尾部添加數據
public void Append(int DataValue)
{
    var newNode = new ListNode(DataValue);
    if (IsNull())
    {
        Head = newNode;
        Tail = newNode;
    }
    else
    {
        Tail.Next = newNode;
        newNode.Previous = Tail;
        Tail = newNode;
    }
    Current = newNode;
    ListCountValue++;
}

刪除當前節點

需處理三種位置:頭節點、尾節點、中間節點,並正確更新頭尾指針與鄰居節點的雙向引用:

/// 刪除當前數據
public void Delete()
{
    if (IsNull()) return;
    
    if (IsBOF()) // 刪除頭節點
    {
        Head = Current.Next;
        Current = Head;
        ListCountValue--;
        return;
    }
    
    if (IsEOF()) // 刪除尾節點
    {
        Tail = Current.Previous;
        Current = Tail;
        ListCountValue--;
        return;
    }
    
    // 刪除中間節點
    Current.Previous.Next = Current.Next;
    Current.Next.Previous = Current.Previous; // 原文缺失此行,補全雙向維護
    Current = Current.Previous;
    ListCountValue--;
}

關鍵修正與補充

  • 中間節點刪除:原代碼僅更新Previous.Next,遺漏Next.Previous,會導致反向鏈斷裂。已在上方補全。
  • Current指針策略:刪除後指向前驅節點(頭/尾刪除則指向新頭/尾),便於連續操作。
  • 異常安全:實際項目中建議在指針操作前檢查null,或使用Debug.Assert。

這兩個方法是鏈表動態修改的基石,配合Insert可構建完整增刪改查能力。

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