C語言-連結串列(單鏈表,迴圈連結串列)
阿新 • • 發佈:2022-04-10
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)單鏈表的插入操作