DS 7 雙鏈表的初始化,插入,刪除與遍歷

2022-08-30 12:09:06 字數 1013 閱讀 7300

初始化:

typedef struct

dnode dnode, *dlinklist;

//初始化雙鏈表

bool initdlinklist(dlinklist &l)

//判斷雙鏈表是否為空(帶頭結點)

bool

empty(dlink list l)

後插操作:

//

在p結點之後插入s結點

bool insertnextdnode(dnode *p, dnode *s)

有了後插操作,類似的按位序插入與前插操作也是很容易實現

刪除與銷毀:

//

刪除p結點的後繼結點

bool delletenextbnode(dnode *p)

if (p ==null)

return

false

; dnode *q = p->next; //

找到p的後繼結點q

if (q ==null)

return

false; //

p沒有後繼

p->next = q->next;

if(q->next!=null) //

q結點不是最後乙個結點

q->next->prior=p;

free(q); //

釋放結點空間

return

true;}

//銷毀雙鏈表l

void destorylist(dlinklist &l)

遍歷:

//

後向遍歷

while (p !=null)

//前向遍歷

while (p !=null)

//前向遍歷(跳過頭結點)

while (p->prior !=null)

雙鏈表不可隨機訪問,按位查詢、按值查詢操作都只能用遍歷的方式實現

單鏈表的初始化 查詢 刪除 插入 釋放

get1 我這裡的單獨建立了乙個結構體 list來儲存整個鍊錶的資訊和一般的參考書上可能不一樣 2 實際的單鏈表由 list裡面的 頭結點head進行連線。3 頭結點有資料域和指標域 資料域可以任意替換 4 本程式實現了 單鏈表的建立 使用尾插法,符合先進先出的生活邏輯。頭插法也可以 單鏈表的刪除 ...

單鏈表基本操作 初始化,建立,插入,查詢,刪除

單鏈表的初始化,建立,插入,查詢,刪除。include include typedef int elemtype 定義結點型別 typedef struct node node,linkedlist 單鏈表的初始化 linkedlist linkedlistinit 單鏈表的建立1,頭插法建立單鏈表...

迴圈鍊錶的初始化,插入與刪除

迴圈鍊錶與普通鍊錶相比,區別在於尾結點的next指向頭結點,當鍊表為空時,頭結點的next指向自身 如下 鍊錶的初始化 package list public class circlelinklist 鍊錶的順序新增 public void circlelinklist add object dat...