單鏈表的建立,查詢 按值查詢 ,銷毀,列印

2021-08-28 19:01:38 字數 1782 閱讀 8317

單鏈表是資料結構中較為「簡單」的一部分,但是它卻是很重要的一部分。二叉樹,線索二叉樹,雜湊函式等等的相關操作都離不開鍊錶,因此搞懂單鏈表顯得尤為重要。下面是我對鍊錶簡單操作的一些理解。(本文中所有鍊錶**均無頭結點,ppfirst指的是首元結點)

首先,單鏈表的本質得先清楚。單鏈表是一種鏈式儲存的線性表。它可以解決陣列無法儲存多種型別的問題。我們通過圖簡單的認識一下鍊錶:

其次,單鏈表的相關操作需要掌握。(重中之重)

1 單鏈表成員的建立,即結點的建立。

鍊錶結點的建立,首先宣告結構體,結構體中包括資料域和指標域:**如下所示:

typedef int datatype; 

//建立單鏈表的成員,其實就是結點

typedef struct slistnode slistnode; //slistnode為這個結構體的別名

2 初始化單鏈表

初始化單鏈表也就是將首元結點初始化為空,**如下:

void slistinit(slistnode **ppfirst)

3 列印單鏈表

列印單鏈表,首先判斷鍊錶是否為空,為空則直接列印「空鍊錶」,否則迴圈列印出每個結點的資料

//列印

void slistprint(slistnode *ppfirst)

else

printf("null\n");

}}

4 建立新結點

建立新的結點,新結點包含資料域和指標域。將其封裝為函式,呼叫更加方便。主要**如下:

//建立新結點,結點的資料域為data,pnext域設定為空

slistnode *_createnode(datatype data)

//建立失敗

newnode ->data = data;

newnode ->pnext = null;//建立成功

}

5  單鏈表的查詢

按值查詢,找到後返回第乙個的結點指標,如果沒找到,返回null

// 按值查詢,返回第乙個找到的結點指標,如果沒找到,返回null

slistnode * slistfind(slistnode *ppfirst, datatype data)

} return null;

}

6 銷毀單鏈表

銷毀單鏈表也就是將每個結點free掉,並且將首元結點置空。

// 銷毀 (記錄並刪除鍊錶中的每個結點,並將頭結點置為空)

void slistdestroy(slistnode **ppfirst)

*ppfirst = null;

}

7 單鏈表的尾插

// 尾部插入(先找到最後乙個結點,並把它記錄下來,再把最後乙個結點的pnext域指向新的結點)

void slistpushback(slistnode** ppfirst, datatype data)

else

p1 ->pnext = p;//此時p1為最後乙個結點

}}

上述鍊錶操作的測試**如下:

#include #include #include #include int main()

C 單鏈表實現(插入,查詢,刪除,銷毀)

include include using namespace std struct data bool operator const data d const struct node 新建乙個節點,返回節點指標 struct node create node struct data data 在鍊...

單鏈表的初始化,刪除,銷毀,查詢

單鏈表的初始化,頭刪,尾刪,頭插,尾插,銷毀,查詢。node.h ifndef node h define node h typedef int datatype define null 0 include include includetypedef struct node node,linkli...

9106 查詢單鏈表中的值

從非空單鏈表中查詢其值在 s,t 之間 含s和t 的所有元素,要求輸出值在 s,t 之間的元素個數。輸入的第一行為乙個數字n,表示下面有n組資料,每組資料報括3行 第1行包含兩個數字s和t,第2行為單鏈表的表長len 0每組輸出為一行,對於每組輸入資料,輸出值在 s,t 之間的元素個數。1 8 18...