迴圈雙向鍊錶

2021-08-09 21:19:38 字數 1200 閱讀 4637

雙向迴圈鍊錶:每個節點都含有指向上乙個節點(pre)和下乙個節點(next)的指標,因此整個鍊錶可以往兩個方向,最後乙個節點的next指向頭結點,頭結點的pre指向尾節點,因此是迴圈鍊錶。

節點資料:

typedef int datatype;

typedef struct listdoublelist,*pdoublelist;

/* 初始化雙向煉表頭結點 */

void doublelist_init(pdoublelist *head)

/* 讓頭結點的pre和next指向自己 */

(*head)->pre = *head;

(*head)->next = *head;

}/* 插入到頭節點 */

void doublelist_inserthead(pdoublelist head,pdoublelist node)

/* 插入到尾節點 */

void doublelist_inserttail(pdoublelist head,pdoublelist node)

/* 刪除指定資料的節點 */

int doublelist_delete(pdoublelist head,datatype data)

} printf("沒有知道該節點\n");

}/* 為鍊錶建立指定個節點資料 */

void doublelist_create(pdoublelist head,int n)

printf("請輸入第%d個節點的資料:",i+1);

scanf("%d",&new->data);

/* 把新節點放入鍊錶 */

doublelist_inserthead(head,new); //放入到頭結點

//doublelist_inserttail(head,new); //放入到尾結點 }}

/* 遍歷雙向迴圈鍊錶 */

void doublelist_each(pdoublelist head)

printf("\n");

}

測試程式:

雙向鍊錶和雙向迴圈鍊錶

和單向鍊錶相比,多了乙個前驅結點。如果他為空,那麼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...