C語言 鍊錶

2021-07-17 03:44:01 字數 1314 閱讀 6473

鍊錶

1。是由結構體和指標構成的。

2。包括兩個部分乙個是資料域和指標域。

3。鍊錶中的結點分為兩類:頭結點和一般結點。頭結點是沒有資料域的

4。基本操作有:初始化鍊錶,增加結點和刪除結點,求鍊錶的長度等等。

struct linknode;

這個地方有個知識點:這個是鍊錶的資料結構是有結構體和指標構成。結構體名為linknode.但這裡面沒有定義結構體變數,只有我們定義了結構體變數才能使用結構體。

結構體變數怎麼定義呢?

有兩種方式:

1。struct linknode linklist;

2.typedef struct linknode linklist.

一般我們都希望採用第2種,這樣的好處是: 當我們再定義結構體變數時,可以用:linklist p;而如果我們採用第一種還必須採用 struct linknode p;對比一下就可以知道第2種要簡單很多。那麼下面我們都採用第2種方式來定義結構體變數。

上面我們已經定義了乙個鍊錶:

1。初始化鍊錶。

#include

#include

int initlinklist(linklist **lnode)

在初始化鍊錶的時候,我們用到了2級指標為什麼呢?因為我們希望在initlinklist函式生成的頭結點,主函式中也能指向這個頭結點。如果我們用一級指標的話,用malloc分配空間的時候,它將會返回分配空間的首位址給指標變數lnode,而不能使是的空間被主函式中指標變數l得到這個位址。所以我們要用2級指標。

void main()

2。增加鍊錶結點

增加鍊錶結點其實很簡單,一般用到三個結構體指標變數和乙個迴圈結構。

insertlinklist(linklist *lnode)

while(9);//迴圈退出的條件是輸入的資料-9999

}void main()

3。求鍊錶的長度:

int lengthlinklist(linklist *lnode)

return i; }

void main()

4.刪除結點

刪除鍊錶結點其實很簡單,一般用到三個結構體指標變數和乙個迴圈結構。

destroylinklist(linklist *lnode)

}void main()

基本的知識點有:結構體變數,結構體指標變數,頭結點和一般結點,資料域和指標域,while迴圈。

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

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

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 定義了乙個結構...