如何使用C 編寫雙向鍊錶

2021-10-01 11:22:27 字數 1578 閱讀 9253

前幾日我朋友跟我吐槽c#的陣列往上追溯並處理資料不方便,然後我就想起了我很久沒用過鍊錶,因此今天下午抽了點時間寫了乙個雙向鍊錶以後想用的時候自己可以拿來用,這裡我寫的是尾插法,如果忽略tail節點,它還是個迴圈雙向鍊錶。

鍊錶與陣列不一樣,陣列能快速查詢資料,但是插入和刪除不方便,而鍊錶在指定位置插入或者刪除都是非常方便的,但是對於查詢特定資料則比較麻煩

/// /// 鍊錶節點的基本結構

///

///

public class node

/// /// 下乙個節點

///

public nodenext

/// /// 上乙個節點

///

public nodepre

public node()

public node(t model)

}/// /// 鍊錶的處理類

///

///

public class nodelist

/// /// 鍊錶長度

///

public int length }

private nodetail;

public nodelist()

public nodelist(t model)

/// /// 在鍊錶末端插入節點

///

///

public void insertnode(t model)

/// /// 在指定位置插入節點

///

///

///

///

public bool insertnode(t model, int pos)

else

n.next = temp.next;

temp.next = n;

length++;

return true;}}

/// /// 刪除指定節點

///

///

///

public bool removenode(int pos)

else

temp.next.pre = temp.pre;

temp.pre.next = temp.next;

length--;

return true;}}

/// /// 輸出資料

///

public void consolewrite()

個資料是:;", i, temp.data);}}

} static void main(string args)

輸出結果如下:

第0個資料是:1;

第1個資料是:8;

第2個資料是:7;

第3個資料是:2;

第4個資料是:4;

第5個資料是:5;

第6個資料是:6; 

大概就是這個意思,ps畫圖太麻煩了,就不繼續畫了

C 雙向鍊錶

部落格介紹了c語言,以及c 的單向鍊錶。那麼我們今天介紹的雙向鍊錶,顧名思義,就是資料本身具備了左邊和右邊的雙向指標。雙向煉表相比較單向鍊錶,主要有下面幾個特點 1 在資料結構中具有雙向指標 2 插入資料的時候需要考慮前後的方向的操作 3 同樣,刪除資料的是有也需要考慮前後方向的操作 那麼,乙個非迴...

C 雙向鍊錶

includeusing namespace std typedef int datatype class linknode friend class slist private datatype data linknode prev linknode next class slist void p...

C 雙向鍊錶

考慮順序表中總是可以很方便地找到表元素的前驅和後繼,但單鏈表只能找後繼。如要找前驅,必須從表頭開始搜尋。為了克服這一缺點,可採用雙向鍊錶 double linked list 雙向鍊錶經常採用帶頭結點的迴圈鍊錶方式,如下圖所示。檢視動畫演示 圖7.10 帶表頭結點的雙向迴圈鍊錶 假設 指標p指向雙向...