雙向迴圈鍊錶

2021-10-06 10:44:56 字數 1315 閱讀 3899

參考**鏈結

鍊錶是一種資料結構。剛學習了單鏈表,這就繼續雙向迴圈鍊錶,不解釋。

//表頭結點的front和tail都指向自己

struct doublelist*

creatlist()

struct doublelist*

creatnode

(int data)

對於雙向迴圈鍊錶來講,表頭插入和表尾插入是沒有太大區別的。

下面以表尾插入舉例。

雙向鍊錶與單項鍊表最大的區別就是包含了front和tail,插入的時候要給front和tail都賦值,都更新。

插入的理解比較抽象,很難用文字或圖來表示。

//環形的在頭還是尾插入都差不多,因為是環形的鍊錶

void

insertnodebyheadortail

(struct doublelist* headnode,

int data)

//刪除表尾,由於是刪除表尾,所以不用指定

void

deletelisttailnode

(struct doublelist* headnode)

else

}

//刪除指定結點

void

(struct doublelist* headnode,

int num)

else

else

posnode = posnode->tail;

}//能走到下面這一步說明已經找到了

posnode->front->tail = posnode->tail;

posnode->tail->front = posnode->front;

}free

(posnode);}

}

void

printlist

(struct doublelist* headnode)

else

}printf

("\n");

}

int

main()

感謝原作者們所做出的貢獻。

雙向鍊錶和雙向迴圈鍊錶

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

迴圈鍊錶,雙向鍊錶

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

鍊錶 雙向迴圈鍊錶

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