我們在程式裡大多使用的是靜態資料結構,比如說整型、浮點型、陣列,它們的特點是由系統分配,固定大小的儲存空間。在之後程式執行時,它的空間位置以及容量都不會再改變。
但當我們不確定乙個東西的儲存空間時應該如何處理?
這時我們就需要用到動態資料結構。
首先鍊錶需要有乙個頭指標變數(即head),head存放了乙個位址,這個位址指向了煉表裡的第乙個元素(a)。
由上圖我們可以看出t節點為最後乙個節點,所以它的位址儲存為空(null)。
注意到煉表裡的各個元素的位址不一定是連續的,這與陣列的儲存位址方式有所區別。
下面我們來寫乙個靜態鍊錶:
1.首先寫乙個結構體型別來作為節點元素:
struct weapon;
2.現在定義三個weapon的結構體變數作為節點以及頭指標head:
struct weapon a,b,c,*head;
3.接下來對三個weapon結構體成員進行賦值操作:
a.atk = 100;
a.price = 100;
b.atk = 200;
b.price = 200;
c.atk = 300;
c.price = 300;
4.將三個節點連成乙個鍊錶:
head = &a;
a.next = &b;
b.next = &c;
c.next = null;
5.列印煉表裡各個元素的值:
struct weapon *p;
p = head;
while(p != null)
其中「struct weapon *p」表示借助指標p去訪問節點。
6.完整**如下:
#includestruct weapon;
int main()
return 0;
}
7.執行結果:
C語言動態資料結構 鍊錶
動態資料結構聊邊的變數不是通過型別識別符號定義,而是程式執行時如果需要在想系統申請。變數所占用的記憶體單元不一定是連續存放的。整體所佔的統建隨元素的個數變化而變化,從而減少了空間的浪費。鍊錶的用途 1 用來代替陣列元素個數不定的陣列 2 在資料庫管理程式中用來對磁碟檔案的儲存操作。用 的形式,簡單介...
C語言動態鍊錶資料結構
鍊錶的操作增刪改查 typedef int data struct snode snode g head null 全域性變數 從頭部新增 void addhead data nnum 從尾部新增 void addtail data nnum snode p g phead snode p1 nul...
資料結構 靜態鍊錶和動態鍊錶
通過指標將資料連線起來 整個資料結構中,很重要的一點是,初始化和銷毀對應,插入和刪除對應,有malloc new 有free delete 一定要對應。鍊錶的各項操作,最關鍵的,其實就是找到被操作元素的上乙個元素,插入位置的上乙個元素,或者要刪除元素的上乙個元素,這都是非常關鍵的,同時也要注意,鍊錶...