C語言單鏈表

2021-07-31 13:22:39 字數 1026 閱讀 2338

一、單鏈表的建立

有了動態記憶體分配的基礎,要實現鍊錶就不難了。

所謂鍊錶,就是用一組任意的儲存單元儲存線性表元素的一種資料結構。

鍊錶又分為單鏈表、雙向鍊錶和迴圈鍊錶等。我們先講講單鏈表。

所謂單鏈表,是指資料接點是單向排列的。乙個單鏈表結點,其結構型別分為兩部分:

1、資料域:用來儲存本身資料

2、鏈域或稱為指標域:用來儲存下乙個結點位址或者說指向其直接後繼的指標。

例:typedef struct node

stud;

這樣就定義了乙個單鏈表的結構,其中char name[20]是乙個用來儲存姓名的字元型陣列,指標*link是乙個用來儲存其直接後繼的指標。

定義好了鍊錶的結構之後,只要在程式執行的時候愛資料域中儲存適當的資料,如有後繼結點,則把鏈域指向其直接後繼,若沒有,則置為null。

下面就來看乙個建立帶表頭(若未說明,以下所指鍊錶均帶表頭)的單鏈表的完整程式。

#include

#include /*包含動態記憶體分配函式的標頭檔案*/

#define n 10 /*n為人數*/ 

typedef struct node

stud;

stud * creat(int n) /*建立單鏈表的函式,形參n為人數*/

h->name[0]='/0'; /*把表頭結點的資料域置空*/

h->link=null; /*把表頭結點的鏈域置空*/

p=h; /*p指向表頭結點*/

for(i=0;ilink=s; /*把s的位址賦給p所指向的結點的鏈域,這樣就把p和s所指向的結點連線起來了*/

printf("請輸入第%d個人的姓名",i+1);

scanf("%s",s->name); /*在當前結點s的資料域中儲存姓名*/

s->link=null;

p=s;

}return(h);

}main()

這樣就寫好了乙個可以建立包含n個人姓名的單鏈表了。

寫動態記憶體分配的程式應注意,請盡量對分配是否成功進行檢測

C語言單鏈表

include include include define error 0 typedef struct lnode lnode,linklist linklist initlist linklist l node next null l node return l int listlength ...

c語言 單鏈表

單鏈表,顧名思義是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。鍊錶中的資料是以結點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。我們在這裡使用c語言實現 h 檔案 pragma on...

C語言單鏈表

學過線性表中的順序表的都知道,順序表裡的資料在物理記憶體上是相鄰的,所以當我們在順序表中想要訪問下乙個元素時可以直接去訪問,就像陣列一樣。但是單鏈表卻不同,單鏈表的資料儲存的位置是動態分配的,也就是說單鏈表的儲存在物理記憶體上不是相鄰的,所以我們就只能通過指標這種方式來把單鏈表串起來,通過指標來訪問...