c語言 鍊錶 C語言鍊錶例項 玩轉鍊錶

2021-10-11 07:01:51 字數 1366 閱讀 4336

下圖為最一簡單鍊錶的示意圖:

第 0 個結點稱為頭結點,它存放有第乙個結點的首位址,它沒有資料,只是乙個指標變數。以下的每個結點都分為兩個域,乙個是資料域,存放各種實際的資料,如學號 num,姓名 name,性別 *** 和成績 score 等。另乙個域為指標域,存放下一結點的首位址。鍊錶中的每乙個結點都是同一種結構型別。

在第乙個結點的指標域記憶體入第二個結點的首位址,在第二個結點的指標域內又存放第三個結點的首位址,如此串連下去直到最後乙個結點。最後乙個結點因無後續結點連線,其指標域可賦為 0。這樣一種連線方式,在資料結構中稱為「鍊錶」。

而使用動態分配時,每個結點之間可以是不連續的(結點內是連續的)。結點之間的聯絡可以用指標實現

例如:每一次分配一塊空間可用來存放乙個學生的資料,我們可稱之為乙個結點。有多少個學生就應該申請分配多少塊記憶體空間,也就是說要建立多少個結點。

乙個存放學生學號和成績的結點應為以下結構:

struct stu

前兩個成員項組成資料域,後乙個成員項 next 構成指標域,它是乙個指向 stu 型別結構

的指標變數。

鍊錶的基本操作對鍊錶的主要操作有以下幾種:

1. 建立鍊錶;

2. 結構的查詢與輸出;

3. 插入乙個結點;

4. 刪除乙個結點;

建立乙個三個結點的鍊錶,存放學生資料。為簡單起見, 我們假定學生資料結

構中只有學號和年齡兩項。可編寫乙個建立鍊錶的函式 creat。程式如下:

#define null 0

#define type struct stu

#define len sizeof (struct stu)

struct stu //定義結點結構

;  type *creat(int n)//n代表建立n個結點鍊錶

return(head);

}

在函式外首先用巨集定義對三個符號常量作了定義。這裡用 type 表示 struct stu,用 len表示 sizeof(struct stu)主要的目的是為了在以下程式內減少書寫並使閱讀更加方便。結構stu 定義為外部型別,程式中的各個函式均可使用該定義。

creat 函式用於建立乙個有 n 個結點的鍊錶,它是乙個指標函式,它返回的指標指向 stu結構。在 creat 函式內定義了三個 stu 結構的指標變數。head 為頭指標,pf 為指向兩相鄰結點的前一結點的指標變數。pb 為後一結點的指標變數。

- c語言玩轉鍊錶 -

c語言與資料結構的經典實戰案例

_9天精通linux c語言 -

c語言鍊錶 鍊錶

在儲存一大波數的時候,我們通常使用陣列,但有時候陣列顯得不夠靈活,比如有一串已經從小到大排序好的數 2 3 5 8 9 10 18 26 32 現在需要往這串數中插入6使其得到的新序列仍符合從小到大排列。如果我們使用陣列來實現這一操作,則需要將8和8後面的數字都依次往後挪一位,如果你覺得這幾個數不算...

c語言 鍊錶 C語言之鍊錶入門

鍊錶三要素 1 頭指標 head 是用來說明鍊錶開始了,頭指標就代表鍊錶本身 所以以後要訪問鍊錶,就要訪問頭指標 2 結點 node 鍊錶中每乙個結構體變數 3 尾指標 用來說明鍊錶的結束 它是乙個空指標,null include includetypedef struct stud 定義了乙個結構...

鍊錶(C語言)

鍊錶 是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組成,結點可以在執行時動態生成。每個結點包括兩個部分 乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。相比較順序結構,鍊錶比較方便插入和...