C語言單鏈表基本操作總結

2022-07-10 21:51:14 字數 2383 閱讀 6818

鍊錶是一種常見的資料結構。它與常見的陣列是不同的,使用陣列時先要指定陣列包含元素的個數,即為陣列的長度,但是如果向這個陣列中加入的元素超過了陣列的大小時,便不能將內容全部儲存。

鍊錶這種儲存方式,其元素個數是不受限定的,當進行新增元素的時候儲存的個數就會隨之改變。

在鍊錶中有乙個頭指標變數,這個指標變數儲存乙個位址,通過這個位址來找到這個鍊錶,頭指標節點指向第乙個節點,在鍊錶中每個節點包含兩個部分:資料部分和指標部分。雖然結構體不能含有與本身型別相同的結構,但是可以含有之相同型別結構的指標,這種定義是鍊錶的基礎,鍊錶中每一項都包含在何處能找到下一項的資訊。而最後乙個節點的指標指向必須為空null,從鍊錶的原理來看不用擔心鍊錶的長度會超出範圍這種問題。

typedef struct

node

pnote;

ponte* head =null;

pnote* end = null;

void addlisttill(int

n) }

}

該函式的功能是在尾新增的方式在鍊錶尾部增加乙個節點,首先建立乙個節點並申請乙個節點的記憶體,然後對傳入節點的資料進行賦值,注意尾新增的新節點的指標應指向空。此時分為兩種情況:1.鍊錶無節點,那麼這個節點既是頭結點也是尾節點;2.已經有節點,那麼新增加的節點將成為最後乙個節點,而之前的節點成為倒數第二個節點,所以它的指標應該指向新新增的節點,之後全域性變數應指向當前節點。(操作先後順序不變)

void

scanlist()

}

該函式的功能是遍歷輸出這個鍊錶,首先定義乙個用於遍歷的臨時指標,用while迴圈實現遍歷輸出的操作

pnote* findnode(int

a)

//沒找到

return

null;

}

該函式的功能是遍歷陣列,對每個節點進行一一判斷,若找到則返回該節點,沒找到則返回null。

void

freelist()

//頭尾清空

head =null;

end =null;

}

該函式的功能是乙個乙個的將節點記憶體釋放,最後達到全部刪除的效果。要注意的是最後應將頭尾節點至null,否則下次的頭節點就接著0x10。

void addlistrand(int index, int

a) pnote* pt =findnote(index);

if(pt == null) //

無此節點

//有此節點

//建立節點,申請記憶體

pnote* temp = (pnote*)malloc(sizeof

(pnote));

temp->num =a;

temp->next =null;

//兩種情況:1.節點在尾部;2.節點在中間

if(pt =end)

else

}

此函式關鍵在於兩種情況的判斷,要注意的是若插入的節點位置在中間,那麼要先連後面再連前面。

void

deletelisetail()

//鍊錶不為空

if(head ==end)

else

}

尾刪除應先判斷鍊錶是否為空或者只有乙個節點,若只有乙個節點則直接置null,若不為空,則遍歷找到倒數第二個節點,將最後乙個節點釋放記憶體,再將倒數第二個節點設定為end,然後將它的指標指向null。

void

deletelisehead()

head = head->next;

free

(temp);

}

先定義乙個臨時變數指向舊頭指標,將第二個節點記為新的頭指標head,之後將舊頭指標釋放。

void deletelistrand(int

a) pnote* temp =findnode(a);

if (temp ==null)

if (head == end)//

只有乙個節點

else

if (head->next == end)//

有兩個節點

else

pt->next = temp->next;

free

(temp);}}

分為三種情況:1.只有乙個節點;2.有兩個節點;3.有多個節點。三個步驟與前面的思路相似,這裡就不再贅述

void

main()

else

*/}

有關無空頭的單鏈表的基本操作就總結到這裡

C語言 單鏈表各種基本操作

includetypedef struct student node 鍊錶建立 node create else break p next null head head next return head 鍊錶列印 void print node head printf n n 鍊錶測長 int ge...

c語言 單鏈表的基本操作

list.h檔案 pragma once include include include typedef int datatype typedef struct listnode listnode listnode buynode datatype x 建立乙個結點 void pushback li...

c 單鏈表基本操作

下午沒事,看資料結構。想到自畢業以後,都沒有寫過這些東西了。寫個鍊錶基本操作,還沒完全測試。includeusing namespace std node 節點 struct node int data node p 單鏈表 class link 通過陣列夠造 link int arr,int le...