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

C# 實作雙向鏈結清單:完整節點操作與列表管理指南

     編輯:關於C#

鏈結清單是基礎資料結構,本文實作雙向鏈結清單(含前後指標),涵蓋節點定義、新增、刪除、插入、搜尋、排序插入等核心操作。

節點類別定義


public class ListNode {
    public ListNode(int newValue) { Value = newValue; }
    public ListNode Previous;  // 前一節點
    public ListNode Next;      // 後一節點
    public int Value;          // 節點資料
}

Clist 列表管理類別

維護 Head、Tail、Current 三指標與節點計數:


public class Clist {
    private ListNode Head, Tail, Current;
    private int ListCountValue;
    public Clist() { Head = Tail = Current = null; ListCountValue = 0; }
    // ... 核心方法如下
}

核心操作實作

尾部新增 Append


public void Append(int dataValue) {
    ListNode newNode = new ListNode(dataValue);
    if (IsNull()) { Head = Tail = newNode; }
    else { Tail.Next = newNode; newNode.Previous = Tail; Tail = newNode; }
    Current = newNode; ListCountValue++;
}

刪除目前節點 Delete


public void Delete() {
    if (IsNull()) return;
    if (IsBof()) { Head = Current.Next; Current = Head; }
    else if (IsEof()) { Tail = Current.Previous; Current = Tail; }
    else { Current.Previous.Next = Current.Next; Current = Current.Previous; }
    ListCountValue--;
}

導航操作


public void MoveNext() { if (!IsEof()) Current = Current.Next; }
public void MovePrevious() { if (!IsBof()) Current = Current.Previous; }
public void MoveFirst() { Current = Head; }
public void MoveLast() { Current = Tail; }

狀態判斷


public bool IsNull() { return ListCountValue == 0; }
public bool IsEof() { return Current == Tail; }
public bool IsBof() { return Current == Head; }

排序插入


public void InsertAscending(int value) {
    if (IsNull()) { Append(value); return; }
    MoveFirst();
    if (value < GetCurrentValue()) { Insert(value); return; }
    while (true) {
        if (value < GetCurrentValue()) { Insert(value); break; }
        if (IsEof()) { Append(value); break; }
        MoveNext();
    }
}

InsertUnAscending 邏輯類似,比較方向相反。

輔助功能

  • GetCurrentValue():取得目前節點值
  • ListCount:取得節點總數
  • Clear():從頭刪除至空
  • Insert():目前位置前插入

此實作展示雙向鏈結清單靈活的節點操作能力,為理解 .NET 內建 LinkedList<T> 奠定基礎。

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