1. 程式人生 > 其它 >C語言-連結串列(單鏈表,迴圈連結串列)

C語言-連結串列(單鏈表,迴圈連結串列)

C語言-連結串列(單鏈表,迴圈連結串列)

1.連結串列的概念

單鏈表:線性表的連結儲存結構。
儲存思想:用一組任意的儲存單元存放線性表的元素。

*next其實很好理解它是一個指標域指向另外一個相同結點的指標域

Node st; 等價於 struct node st;

Link p;等價於 struct node *p;

p=&st(p指向了st這個變數)

p = (Link)malloc(sizeof(Node))

等價於 (struct node *) malloc (sizeof(Node))

不寫type of就需要寫struct xxx

如何申請連結串列中的一個結點?

p = (Link)malloc(sizeof(Node))

malloc分配的首地址要賦給p,先要轉成指標p需要看待他的方式

如何引用資料元素和指標域?

指標p指向了我們想要訪問的這一塊儲存空間。

什麼是儲存結構?

重點在資料元素之間的邏輯關係的表示,所以,將實際儲存地址抽象。

空表和非空表不統一, 缺點?

如何將空表與非空表統一?

加入一個頭結點

頭結點:在單鏈表的第一個元素結點之前附設一個型別相同的結點,以便空表和非空表處理統一 。

2單鏈表的實現

(1)單鏈表的遍歷操作

思路:

1.先將頭節點傳入

2.再讓p指向第一個有效的結點a1

  • 如果這個連結串列是一個空表我們怎麼考慮?

​ 當p指向head.next就為空,啥都不做。

  • 當不是空表的時候,當p指向head.next,就是head結點的第一個有效的首地址

3.顯示data域

4.顯示下一個結點 p = p.next

最後的時候 p = null 就退出了

p++能否完成後移?

p++指的是指向下一個結構體,並不是你所希望的連結串列的下一個結點。因為地址不是連續的。

(2)求單鏈表的元素個數

p !=null可以直接寫成p

這裡一旦找到就會提前出去,這裡並沒有找到,就會走到最後的false

/#include<bool.h>

(4)單鏈表的插入操作