動態資料結構 靜態鍊錶(C語言)

2021-08-23 12:36:35 字數 1221 閱讀 7131

我們在程式裡大多使用的是靜態資料結構,比如說整型、浮點型、陣列,它們的特點是由系統分配,固定大小的儲存空間。在之後程式執行時,它的空間位置以及容量都不會再改變。

但當我們不確定乙個東西的儲存空間時應該如何處理?

這時我們就需要用到動態資料結構

首先鍊錶需要有乙個頭指標變數(即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 一定要對應。鍊錶的各項操作,最關鍵的,其實就是找到被操作元素的上乙個元素,插入位置的上乙個元素,或者要刪除元素的上乙個元素,這都是非常關鍵的,同時也要注意,鍊錶...