鍊錶 三 雙向鍊錶

2021-09-22 12:55:06 字數 2424 閱讀 6001

前兩篇部落格中介紹的鏈式儲存結構中只有乙個指示直接後繼的指標域。因此,從單鏈表中的某個結點出發,之能向後遍歷每個結點,所尋找這個結點的直接前驅只能向用頭結點出。

而若在每個結點的指標域中再加入乙個指向當前結點直接前驅的指標,就可以克服以上問題。

//雙向鍊錶,帶頭節點,頭的前驅為null,尾的後繼為null

typedef

struct dnode

dnode,

*dlist;

//初始化

void

initlist

(dlist plist)

;//頭插法

bool insert_head

(dlist plist,

int val)

;//尾插

bool insert_tail

(dlist plist,

int val)

;//查詢

dnode *

search

(dlist plist,

int key)

;//刪除

bool delete

(dlist plist,

int key)

;bool isempty

(dlist plist)

;//獲取長度,資料個數

intgetlength

(dlist plist)

;void

show

(dlist plist)

;//獲得key的前驅

dnode *

getprio

(dlist plist,

int key)

;//獲取key後繼

dnode *

getnext

(dlist plist,

int key)

;//清空資料

void

clear

(dlist plist)

;//銷毀

void

destroy

(dlist plist)

;dlist.cpp

#include

#include

#include

#include

"dlist.h"

//雙向鍊錶,帶頭節點,頭的前驅為null,尾的後繼為null

//初始化

void

initlist

(dlist plist)

plist->next =

null

; plist->prio =

null;}

//頭插法

bool insert_head

(dlist plist,

int val)

return true;

}//尾插

bool insert_tail

(dlist plist,

int val)

//查詢

dnode *

search

(dlist plist,

int key)

}return

null;}

//刪除

bool delete

(dlist plist,

int key)

//將p從鍊錶中剔除

p->prio->next = p->next;

if(p->next !=

null

)free

(p);

return true;

}bool isempty

(dlist plist)

//獲取長度,資料個數

intgetlength

(dlist plist)

return count;

}void

show

(dlist plist)

printf

("\n");

}//獲得key的前驅

dnode *

getprio

(dlist plist,

int key)

//獲取key後繼

dnode *

getnext

(dlist plist,

int key)

//清空資料

void

clear

(dlist plist)

//銷毀

void

destroy

(dlist plist)

}

鍊錶 三 雙向鍊錶

1.概念 雙向鍊錶 double linked list 的節點有兩個指標,乙個指向直接前驅,乙個指向直接後繼。2.優點 查詢直接前驅執行時間為o 1 單鏈表為o n 3.儲存結構 雙向鍊錶 typedef struct dulnodedulnode,dulinklist 4.簡單例項 includ...

鍊錶 三 雙向鍊錶

1.概念 雙向鍊錶 double linked list 的節點有兩個指標,乙個指向直接前驅,乙個指向直接後繼。2.優點 查詢直接前驅執行時間為o 1 單鏈表為o n 3.儲存結構 雙向鍊錶 typedef struct dulnodedulnode,dulinklist 4.簡單例項 includ...

鍊錶 05 雙向鍊錶

main.cpp include include doublelinkedlist.h using namespace std int main 雙向鍊錶類 class doublelinkedlist void insert doublelinkednode doublelinkednode 新節...