C語言單向鍊錶建立和遍歷

2021-10-07 08:48:07 字數 2708 閱讀 4808

鍊錶是一種常見的資料結構,鍊錶是由多個結點(自引用結構體)串成的表。

什麼是自引用結構體?

自引用結構體是一種特殊的結構體型別,它有乙個指標型別的成員,這個指標成員指向與這個結構體一樣的型別。

鍊錶就是由乙個乙個結點(自引用結構體),結點被指標串起組成的表。

鍊錶的頭指標,頭節點

鍊錶中指向第乙個結點的指標,一般新建乙個頭節點用於存放頭指標,頭節點可有可無,但是頭指標必須要有。只有通過頭指標我們才能找到鍊錶,遍歷鍊錶中的每乙個結點。

1.結構體宣告

struct node

;

2.結點指標宣告

//為了簡寫,習慣上使用typedef 來將struct node 定義成乙個詞node來代替。

typedef

struct node node;

//生成三個結點指標

//head頭指標,previou指向最後結點的前乙個結點,current指向當前結點(最後乙個結點)

node *head, *previous, *current;

//用於判斷頭指標是否為空

head =

null

;

一、插入第乙個結點1.生成乙個結點由指標current指向該結點

current =

(node *

)malloc

(sizeof

(node)

);

2.將該結點的next指向null

current->next =

null

:

3.為該結點輸入資料

printf

("請輸入乙個數字\n");

scanf

("%d"

,¤t->data)

;

4.把current賦值給previous,使previous成為要插入的下乙個結點的先前結點。

previous = current;
二、插入下乙個結點1.生成第乙個結點,由指標current指向該結點

current =

(node *

)malloc

(sizeof

(node)

);

2.將current 指向null

current->next =

null

;

3.把指標previous的next 從null變成current

previous->next = current;
4.為該結點輸入資料

printf

("請輸入乙個數字\n");

scanf

("%d"

,¤t->data)

;

5.把current賦值給previous

previous = current
三、插入下乙個結點插入下乙個結點與插入第二個結點類似。

//定義自引用結構體(結點)

struct node

;//typedef簡寫struct node

typedef

struct node node;

//建立鍊錶和遍歷鍊錶函式的宣告

node *

creatlist()

;void

displist

(node *head)

;/**

* main函式用於測試

*/int

main

(int argc,

char

const

*ar**)

/** * 遍歷鍊錶輸出資料

* @node *head 需要遍歷的鍊錶的頭指標

*/void

displist

(node *head)

}/**

* 建立鍊錶

* @return node* 返回鍊錶的頭指標,使用者遍歷鍊錶。

*/node *

creatlist()

else

printf

("請輸入乙個數字\n");

scanf

("%d"

,¤t->data)

; previous = current;

}//返回頭指標用於遍歷鍊錶

return head;

}

c語言單向鍊錶建立

typedef struct nodenode,ptrnode 1 結構體的大小 參考鏈結 char 1 int 4 64位系統中,不管什麼型別的指標的大小都是8 cpu一次讀取8位元組,在結構體中會對不滿足8位元組的型別補全為8位元組 乙個實體結構體的大小為補全後所有變數大小的和。sizeof s...

單向鍊錶的建立和操作

public class singlylinkedlistdemo title singlylinkedlist description 簡單單向鍊錶 類 company author sunny date 2016 9 28下午11 12 45 class singlylinkedlist 插入頭...

C語言 建立單向鍊錶的頭結點以及遍歷鍊錶

建立頭節點 鍊錶的頭結點位址右函式值返回 node slistcreat 給head的成員變數賦值 head id 1 head next null node pcur head node pnew null int data while 1 新節點動態分配空間 pnew node malloc s...