資料結構與演算法筆記(四 雙向鍊錶

2021-10-06 04:20:42 字數 1229 閱讀 8148

前一篇:資料結構與演算法筆記(三): 單鏈表

乙個完整的雙向鍊錶應該是頭結點的pre指標指為空,尾結點的next指標指向空,其餘結點前後相鏈。

結點構成

建構函式

typedef

struct lineline,

*a;//分別表示該結點的前驅(pre),後繼(next),以及當前資料(data)

建立

對於建立雙向鍊錶,我們需要先建立頭結點再逐步的進行新增。

請注意,雙向鍊錶的頭結點是有資料元素的,也就是頭結點的data域中是存有資料的,這與一般的單鏈表是不同的。

line*

initline

(line * head)

return head;

}

插入

//判斷條件為真,說明插入位置為鍊錶尾

if(body->next==

null

)else

}return head;

}刪除

("error:沒有找到該元素,沒有產生刪除\n");

return head;

}遍歷

while(list) list=list->next;

void

printline

(line *head)

}

資料結構四雙向鍊錶

雙向鍊錶也叫雙鏈表,是鍊錶的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。而之前的單鏈表為單向鍊錶,雙向鍊錶也就是在單鏈表的結點中增加乙個指向其前驅的pre指標。如圖 這裡介紹雙向鍊錶的常用操作 l ...

資料結構與演算法(4)雙向鍊錶

1.單鏈表的的缺點 1 單向鍊錶查詢的方向只能是乙個方向,而雙向鍊錶可以向前或者向後查詢 2 單向鍊錶不能自我刪除,需要考輔助節點,而雙向鍊錶則可以進行自我刪除 2.雙向鍊錶的說明 1 遍歷 和單向鍊錶一樣,只是可以向前,可以向後 2 新增 預設新增到雙向鍊錶的最後 3 修改 和單向鍊錶思路一樣 4...

資料結構與演算法 鍊錶2 雙向鍊錶

雙向鍊錶結點和單向鍊錶結點的區別在於,多了乙個指向前驅的指標。當這個節點是第乙個節點時,前驅指標是乙個空指標。單向鍊錶的結構如下圖1所示 圖1 單向鍊錶結構圖 雙向鍊錶的結構如下圖2所示 圖2 雙向鍊錶結構圖 顯然通過以上2個圖的對比,可以看出鍊錶兩種形式的特點。雙向鍊錶顯然我們在建立的時候需要永久...