c 對鍊錶的操作(一)

2021-10-02 16:11:29 字數 1485 閱讀 2109

很多初學者覺得鍊錶和陣列一樣都是順序儲存結構,同樣每個資料都有自己的指標,它們到底有什麼區別?

鍊錶是一種動態資料結構,他的特點是用一組任意的儲存單元(可以是連續的,也可以是不連續的)存放資料元素。鍊錶中每乙個元素成為「結點」,每乙個結點都是由資料域和指標域組成的,每個結點中的指標域指向下乙個結點。head是「頭指標」,表示鍊錶的開始,用來指向第乙個結點,而最後乙個指標的指標域為null(空位址),表示鍊錶的結束。可以看出鍊錶結構必須利用指標才能實現,即乙個結點中必須包含乙個指標變數,用來存放下乙個結點的位址。實際上,鍊錶中的每個結點可以用若干個資料和若干個指標。

鍊錶的最大優勢在於資料處理的速度和空間利用率要遠高於陣列。

陣列首先需要占用一塊連續空間,而且不可以實現動態大小,往往會造成空間浪費。而鍊錶由指標直接指向位址,可以把記憶體分散開,充分利用碎片化的空間。

從處理資料的速度上時間複雜度來說,陣列只能通過順次指標訪問,查詢效率低,鍊錶則可以通過頭位指標,對任意儲存段進行修改、刪除和新增。

;listnode 就是要儲存在鍊錶中的結點的型別,結構成員 value 是結點的資料部分,而另乙個結構成員 next 則被宣告為 listnode 的指標,它是指向下乙個結點的後繼指標。

listnoed* head =

nullptr

;

將head指向煉表頭,插入乙個新資料

head =

new listnoed;

head-

>value =1;

head-

>next =

nullptr

;

建立乙個新結點,在其中儲存2的值,並將其作為鍊錶中的第二個結點。可以使用第二個指標來指向新分配的結點

listnoed* secondptr =

new listnoed;

secondptr-

>value =2;

secondptr-

>next =

nullptr

; head-

>next = secondptr;

最後輸出一下鍊錶的兩個節點檢查一下是否建立成功

cout <<

"first "

<< head-

>value << endl;

cout <<

"second "

<< head-

>next-

>value << endl;

結果如下

對鍊錶的操作

這段 沒有主函式,如果想要實現的話 將其放在 h 檔案中呼叫就可以了 如果閒麻煩的話可以直接在這段 後面加乙個主函式,試著呼叫各個函式,觀其功能。對鍊錶的操作函式 void creat 建立鍊錶 bool insert 插入鍊錶 void search 查詢鍊錶 bool del 刪除鍊錶 void...

對鍊錶的綜合操作

對鍊錶的綜合操作 功能有建立,排序,插入,刪除,輸出 include include typedef int elemtype typedef struct nodetype nodetype,linktype linktype create p2 next null free p1 return ...

關於鍊錶的建立和對鍊錶的操作 C語言

1 鍊錶結點的資料項型別 typedef char eletype 2 鍊錶結點的型別 typedef struct nodechainnode 3 鍊錶指標型別 typedef struct list 建立乙個儲存元素的節點。入口引數為儲存在新建立結點中的資料元素的值。返回節點指標,非0表示成功,...