鍊錶的建立以及鍊錶節點的增加和刪除

2021-07-11 03:36:48 字數 1504 閱讀 9592

單鏈表的建立過程有以下幾步:

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...