雙鏈表實現

2021-08-28 07:05:42 字數 1071 閱讀 2544

以前寫的不帶頭的單鏈表實現,當時也啥也沒學,好多東西不知道,加上一心想壓縮**,減少情況,所以寫得不太好。

請教了老師,首先是命名問題和**緊湊性等的改進。還有可讀性方面的改進,多寫了一些注釋。並且因為帶頭的比較好寫,好操作,所以標準寫法也不是很長,繁瑣。

下面貼**

#include #include #include typedef struct nodenode;
初始化(帶頭) 

node * list;

//初始化,這裡·我們list不再是null,而是指向了乙個節點

//這個改進方便了很多操作,也不用借助二重指標把list和next統一表示了

void init(node * list)//初始化

查詢(不用再判斷一下空不空)

node * find(int key,node * list)

列印

void printlist(node * list)//列印

printf("\n");

}

刪除指定結點

void delete(node * list)//刪除指定結點

配合一下刪除:

void deletekey(int key,node * list)

頭插:

void inserthead(int key,node * list)//頭插

按下標插入

單鏈表都寫了,我就不寫長度函式和判斷非法了,用的時候注意吧。

void insert(int key,node * list,int index)

指定某值後插入不寫了,和這個修改指標邏輯一樣,再傳乙個find配合一下就行了。

然後簡單測試

int main()

雙鏈表實現

一 實驗目的 鞏固線性表的資料結構的儲存方法和相關操作,學會針對具體應用,使用線性表的相關知識來解決具體問題。二 實驗內容 建立乙個由n個學生成績的順序表,n的大小由自己確定,每乙個學生的成績資訊由自己確定,實現資料的對錶進行插入 刪除 查詢等操作。分別輸出結果。三 源 includeconst i...

雙鏈表的實現

雙鏈表 1 雙向鍊錶 double linked list 雙 向 鍊錶中有兩條方向不同的鏈,即每個結點中除next域存放後繼結點位址外,還增加乙個指向其直接前趨的指標域prior。注意 雙鏈表由頭指標head惟一確定的。帶頭結點的雙鏈表的某些運算變得方便。將頭結點和尾結點鏈結起來,為雙 向 迴圈鍊...

C 實現雙鏈表

主要實現了頭插,頭刪,尾插尾刪,任意位置的插入刪除,鍊錶的逆置以及鍊錶的深淺拷貝 在這裡說明一下,鍊錶用的最多的就是資料的插入什麼的,所以這裡解決深淺拷貝問題,用的是深拷貝,單鏈表,順序表也是一樣,都是用了深拷貝。雙向煉表相比較於單鏈表而言,相對複雜一點,有兩個指標,來進行實現鏈式結構 先面試具體 ...