單鏈表的建立過程有以下幾步:
1 ) 定義鍊錶的資料結構;
2 ) 建立乙個空表;
3 ) 利用malloc ( )函式向系統申請分配乙個節點;
4 ) 將新節點的指標成員賦值為空。若是空表,將新節點連線到表頭;若是非空表,將新節點接到表尾;
5 ) 判斷一下是否有後續節點要接入鍊錶,若有轉到3 ),否則結束;
單鏈表的輸出過程有以下幾步
1) 找到表頭;
2) 若是非空表,輸出節點的值成員,是空表則退出;
4) 轉到2 ).
接下來來一步步實現鍊錶的建立:
(1)定義乙個結構體型別來儲存這個節點
鍊錶中的每乙個節點的資料型別為結構體型別,節點有兩個成員:整型成員(實際需要儲存的資料)和指向下乙個結構體型別節點的指標即下乙個節點的位址(事實上,此單鏈表是用於存放整型資料的動態陣列)。鍊錶按此結構對各節點的訪問需從鍊錶的頭找起,後續節點的位址由當前節點給出。無論在表中訪問那乙個節點,都需要從鍊錶的頭開始,順序向後查詢。鍊錶的尾節點由於無後續節點,其指標域為空,寫作為null。
圖1:節點儲存
struct node
; //注意結構體定義後面需要;
(2)鍊錶建立
單鏈表有乙個頭節點head,指向鍊錶在記憶體的首位址。當鍊表還沒有建立的時候頭指標為空(null)。
struct node *head;
head = null; //頭指標為空
建立第乙個節點,並用臨時指標p指向這個節點。(利用malloc函式)
struct node *p;
p = (struct node *)malloc(sizeof(struct node));
接下來分別設定新建立的這個節點的左部分和右部分。
scanf("%d",&a);
p ->
data
= a; //將資料儲存到當前節點da中
p ->next =
null; //設定當前節點的下乙個節點為空
//->結構體指標運算子,訪問結構體內部成員
完整**如下:
#include
#include
struct node
;int main()
//輸出鍊錶中的所有數
t = head;
while(t!=null)
getchar();
return
0;}
待續….
參考文獻:
①malloc函式詳解:
②c語言單向鍊錶的建立:
鍊錶節點的增加和刪除
struct listnode 增加節點 第乙個引數是乙個指向指標的指標。當我們往乙個空煉表中插入乙個節點時,新插入的節點 就是鍊錶的頭指標。由於此時會改動頭指標,因此必須把phead引數設為指向指標的指標 void addtotail listnode phead,int value else v...
順序鍊錶的建立,以及刪除鍊錶的某些節點
問題描述 輸人若干個學生資訊 包括學號 姓名和成績 輸人學號為0時輸人結束,建立乙個單向鍊錶,再輸人乙個成績值,將成績大於等於該值的學生資訊輸出。試編寫相應程式。樣例輸入 1 zhang 78 2 wang 80 3 li 75 4 zhao 85 樣例輸出 2 wang 80 4 zhao 85 ...
Redis 鍊錶和鍊錶節點
每個鍊錶節點使用乙個 adlist.h listnode 結構來表示 typedef struct listnode listnode 多個 listnode 可以通過 prev 和 next 指標組成雙向鍊錶。使用 adlist.h list 來持有鍊錶,操作起來會更方便 typedef stru...