18 迴圈鍊錶

2022-09-17 23:39:27 字數 3378 閱讀 6428

1,迴圈鍊錶的初始化

定義乙個頭結點和尾指標的方式,頭結點在這裡是用來連線 第乙個結點和最後乙個結點的結點

1 #include2 #include3

4 typedef struct

link link;

89 link* head_node; //

宣告乙個頭結點

10 link* ptail; //

宣告乙個尾指標

1112 link* initlink() //

初始化迴圈鍊錶

1329

//printf("頭結點中的資料是:%d\n", head_node->data);

//-842150451,頭結點中沒有值,頭結點只是連線第乙個結點和尾結點的結點

30return

head_node;31}

32void showlink(link* headnode) //

輸出迴圈鍊錶的所有元素

2,刪除指定位置處的結點

4 #include5 #include6

7 typedef struct

link link;

1112 link* head_node; //

宣告乙個頭結點

13 link* ptail; //

宣告乙個尾指標

1415 link* initlink() //

初始化迴圈鍊錶

1632

//printf("頭結點中的資料是:%d\n", head_node->data);

//-842150451,頭結點中沒有值,頭結點只是連線第乙個結點和尾結點的結點

33return

head_node;34}

3536

37void showlink(link* headnode) //

輸出迴圈鍊錶的所有元素

3844 printf("\n"

);45}46

4748

49//

刪除位置num處的節點

50 void delnode(link* headnode, int

num)

5160

if (num<1 || num>j) //

刪除的結點是大於等於1,小於等於表長

6165

66 p = headnode; //

p重新指向頭結點

67 link*r;

68for (j = 1; j < num; j++) //

j=num時會結束for迴圈,此時p指向了第num-1個結點

71 q = p->next;//

q是第num個結點,是p的下乙個結點

72 r =q;

73 p->next = r->next; //

刪除q結點後,通過 r 把鍊錶再接回去

74free(q);

7576}77

7879

80void

main()

81

3,查詢指定位置處的結點的下乙個結點

#include#include

typedef

struct

link link;

link* head_node; //

宣告乙個頭結點

link* ptail; //

宣告乙個尾指標

link* initlink() //

初始化迴圈鍊錶

//printf("頭結點中的資料是:%d\n", head_node->data);

//-842150451,頭結點中沒有值,頭結點只是連線第乙個結點和尾結點的結點

return

head_node;

}void showlink(link* headnode) //

輸出迴圈鍊錶的所有元素

printf("\n

");}//

根據資料返回該處的結點

4,刪除指定位置處的前驅結點

將 上面刪除指定位置結點的方法 改用一些即可

#include#include

typedef

struct

link link;

link* head_node; //

宣告乙個頭結點

link* ptail; //

宣告乙個尾指標

link* initlink() //

初始化迴圈鍊錶

//printf("頭結點中的資料是:%d\n", head_node->data);

//-842150451,頭結點中沒有值,頭結點只是連線第乙個結點和尾結點的結點

return

head_node;

}void showlink(link* headnode) //

輸出迴圈鍊錶的所有元素

printf("\n

");}//

刪除指定結點處的的前驅結點

void delprior(link* headnode, int

num)

if (num<2 || num>j+1) //

刪除的結點是大於等於1,小於等於表長

p = headnode; //

p重新指向頭結點

link*r;

for (j = 1; j < num-1; j++)

//j=num時會結束for迴圈,此時p指向了第num-1個結點

q = p->next;//

q是第num個結點,是p的下乙個結點

r =q;

p->next = r->next; //

刪除q結點後,通過 r 把鍊錶再接回去

18 迴圈鍊錶

在迴圈鍊錶中,表中最後乙個節點的指標域不再為空,而是指向煉表頭節點,整個鍊錶形成乙個環。帶頭節點的迴圈單鏈表和迴圈雙鏈表 圖1 迴圈鍊錶 迴圈單鏈表 尾節點的next指標域不再為空,而是指向了頭結點。迴圈雙鏈表 尾節點的next指標域同樣不再為空,而是指向了頭結點。另外,頭結點的prior指標不再為...

迴圈鍊錶,雙向鍊錶

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

鍊錶之迴圈鍊錶

單向鍊錶 鍊錶之單向鍊錶 迴圈鍊錶是單向鍊錶的變化形式。單向鍊錶的尾部的指標域是空的,而迴圈鍊錶的尾部指標是指向鍊錶的頭結點的,其結構如圖一所示。圖 一循 環鏈表結 構圖一 迴圈鍊錶結構 圖一迴圈鍊錶 結構從上面結構可以看出,迴圈鍊錶的節點形成了乙個圈。在進行遍歷時,可以從任意節點開始。如果記錄了尾...