鍊錶是一種常見的重要資料結構。它是動態地進行儲蓄分類的一種結構。
鍊錶有一系列節點構成,節點在執行時動態生成,每個節點包括資料域,資料域儲存當前節點的資訊,指標域儲存下乙個節點的手位址。
記憶體隨著時間的增加會找不到大塊的順序空間
陣列的大小只能是固定的,增加或刪除都會移動大量資料
鏈式儲存大小可以伸縮
鏈式儲存利用率高
靜態鍊錶中的結點都是在程式中定義的,不是臨時開闢的。
**如下
建立動態鍊錶,我們需要開闢動態儲存區。#include
struct student ;
intmain()
while
(p!=
null);
//輸出鍊錶中的資料
return0;
}
這裡我們用到malloc函式
函式原型為
void*malloc(unsighed int size)
下面是源**
首先我們需要定義乙個結構體
定義結構體指標#include
#include
struct node
;
輸出動態鍊錶中的資料int
main()
這樣我們就建立了乙個動態鍊錶,那麼如何在動態鍊錶中插入結點呢?a = head;
//將a的位址初始化為首位址
while
(a !=
null
)return0;
}
首先,為新結點開闢動態儲存空間
在插入結點時,我們需要明確插入結點的位置。分為以下3種情況c=
(struct node *
)malloc
(sizeof
(struct node *))
;//動態開闢儲存空間
scanf_s
("%s%d%d"
,&c->info,
&c->grade[0]
,&c->grade[1]
);c->link =
null
;
1.結點在開頭
2.結點在末尾if
(a==head)
3.結點在中間else
if(a==
null
)b->link=c;
不同的情況用不同的**進行連線else
那麼,我們如何確定插入結點的位置呢?
這裡,我們用a,b兩個指標分別記錄新結點c前後相鄰的兩個位址
**如下
我們用乙個while迴圈依次判斷,直到c中的grade比鍊錶結點中的grade小,或者到最後是跳出迴圈。這樣我們就用a,b取到新結點c前後相鄰的兩個位址。然後按上述方法連線便可實現插入了。a=head;
while(a!=
null
&&c->grade>a->grade)
用指標處理鍊錶
用指標處理鍊錶 建立乙個簡單的鍊錶,它由3個學生資料的結點組成,要求輸出各結點中的資料 include struct student int main while p null 輸出完c結點後p的值為null,迴圈終止 return 0 寫一函式建立乙個有3名學生資料的單向動態鍊錶 include ...
用指標處理鍊錶
鍊錶概述 鍊錶是一種常見的重要的資料結構。它是動態地進行儲存分配的一種結構。鍊錶有乙個 頭指標 變數,它存放乙個位址,該位址指向乙個元素,鍊錶中每乙個元素稱為 結點,每個結點都應包括兩個部分,一為使用者需要用的實際資料,二為下乙個結點的位址。可以看出,頭指標 head 指向第乙個元素,第乙個元素又指...
C語言 關於用指標處理鍊錶
指標 指標的定義 型別名 指標變數名 如 int p 定義的同時進行初始化 int p a 指針對陣列的引用 int a 5 int p p a 0 表示把a 0 的位址賦值給指標p 或者寫 p a 表示把陣列a首元素的位址 即a 0 陣列指標的運算 p 與 p 是不同的 p 是先取 p 的值,然後...