面試筆記 資料結構 雙向鍊錶

2021-09-27 04:22:16 字數 390 閱讀 4690

雙向鍊錶是單鏈表的一種改進。單鏈表只能順著指標方向找到結點的後續結點,而無法找到其前驅結點。為此發明了迴圈鍊錶,只要通過迴圈的指標後移,一定可以找到前驅節點。但是迴圈鍊錶操作起來時間複雜度比較高,需要迴圈遍歷整個鍊錶。對於那些需要經常沿兩個方向移動指標的鍊錶來說,雙向鍊錶更合適。

與單鏈表不同,雙向鍊錶在實現上多採用帶頭結點的方式。因為雙向鍊錶常有插入結點、刪除結點、交換前後結點位置等操作,而每種操作都要修改很多結點的指標域,相比於單向鍊錶的操作要複雜一些,所以為了操作更加方便,減少頭指標 頻繁修改和各種條件判斷,常採用帶頭的雙向鍊錶結構。

雙向鍊錶的定義如下:

typedef

struct node dlnode,

*dlinklist;

面試筆記 資料結構 單鏈表

可以通過下面的 定義乙個單鏈表 typedef struct node lnode,linklist 這裡使用typedef將結構體struct node定義為lnode型別,表示鍊錶中每個結點的型別為lnode,它等價於結構體型別struct node。另外,linklist是指向lnode型別的...

面試筆記 資料結構 佇列與棧

1.佇列 佇列只允許從它的一端插入資料 隊尾 而從另一端取出資料 隊頭 一般情況下,習慣使用鍊錶作為佇列的儲存結構 typedef struct qnodeqnode,queueptr typedef struct linkqueue 上述 定義了乙個完整的佇列。qnode是佇列的結點型別,然後定義...

演算法筆記 資料結構 鍊錶

鍊錶節點一般有兩部分組成,即資料域和指標域 struct node 一般說來,資料域放節點要儲存的資料,而指標域指向下乙個結點的位址,這樣就會產生從某個結點開始的 由指標連線的一條鏈式結構,即鍊錶。而以鍊錶是否存在頭結點,又可以把鍊錶分為帶頭結點的鍊錶和不帶頭結點的鍊錶。頭結點一般成為head,且其...