雙向鍊錶和雙向迴圈鍊錶

2022-06-21 10:48:11 字數 1307 閱讀 3034

和單向鍊錶相比,多了乙個前驅結點。如果他為空,那麼next和prior都指向自己。而對於雙迴圈鍊錶,只需要最後乙個元素的next指向head->next,head->next的prior指向最後乙個節點即可。

新節點s插入鍊錶,s->next給p結點,s->prior給p->prior,然後,p->prior->next指向s,p->prior再指向s。順序需要注意

s->next = p;

s->prior = p->prior;

p->prior->next = s;

p->prior = s;

刪除結點p。p->next->prior 指向 p->prior,p->prior->next 指向 p->next 。最後將p結點delete。

p->prior->next = p->next;

p->next->prior = p->prior;

delete p;

(附截圖)

注意:因為函式沒有返回node*型別,所以這裡對指標進行引用,否則在退出函式的時候,並沒有儲存改變。如果需要刪除全部鍊錶,需要儲存initlist之後的head位址,否則會遺漏乙個node結點沒有刪除。

**實現:

#include#include#includeusing namespace  std;

const int ok = 1;

const int error = 0;

const int letternum = 26;

typedef char elemtype;

struct node;

int initlist(node *&l)

p->next = l->next; //尾結點指向head->next(第乙個有字母的位址)

l->next->prior = p;

return ok;

}void change(node *&l,int i)

} else if (i<0)

} else

}int main()

cout

也可以致信進行交流 : [email protected]

雙向鍊錶和迴圈鍊錶

雙向鍊錶和單鏈表的區別就在於多了乙個前驅 有需要檢視單鏈表的在主頁裡面查詢 雙向鍊錶 如下 typedef class node node class doublelist doublelist node buynode int val,node next,node pre void insert ...

迴圈鍊錶,雙向鍊錶

迴圈鍊錶 迴圈鍊錶與順序鍊錶之間的區別 迴圈鍊錶最後乙個資料的next指標域不為空,而是指向頭結點,其他基本操作大體相同,只是在判斷表結束的條件變為判斷節點的引用域是否為頭引用 雙向鍊錶 author neosong date oct 10,2017 4 43 01 pm program of in...

鍊錶 雙向迴圈鍊錶

雙向迴圈鍊錶與單鏈表一樣,都是邏輯連續 物理不連續的儲存方式,但它的效果要遠遠優於單鏈表,其結構如下 雙向迴圈鍊錶首先要有乙個頭節點,頭節點中不存放資料,真正的資料從頭節點的下乙個節點開始存放 然後每乙個節點都有兩個指標,分別指向前乙個節點和後乙個節點 最後頭尾相連,就成了雙向迴圈鍊錶。includ...