C 簡單單向鍊錶的實現,插入,刪除,列印

2021-09-26 18:52:56 字數 1666 閱讀 2844

直接上**:

#include

#include

using namespace std;

typedef

struct node node;

//通過模板的使用,可以避免numlist陣列退化成指標

template

void

makelist

(node *head,t& numlist)

}void

print_

(node *head)

cout<

}void

delete_

(node *head,

int index)

// 節點刪除需要充分考慮到記憶體的處理,下面僅僅簡單的處理,並不合適

node *s;

s =(node*

)malloc

(sizeof

(node));

s->next = p->next->next;

delete p->next;

p->next = s->next;

free

(s);

}void

add_

(node *head,

int index,

int addnumber)

node *s;

s =(node*

)malloc

(sizeof

(node));

s->num_ = addnumber;

s->next = p->next;

p->next = s;

}int

main()

;// cout<< sizeof(a)/ sizeof(*a)

(node*

)malloc

(sizeof

(node));

makelist

(head,a)

;print_

(head)

;delete_

(head,2)

;print_

(head)

;add_

(head,2,

2);print_

(head)

;return0;

}

執行結果:

上面的**是自己一點一點敲出來的,比起以前還得看書才能敲出來,現在算是有點進步了,雖然只是簡單的單向也沒有涉及到鍊錶的合併、排序等問題,但是這些足以讓我有不小收穫。溫故而知新的感覺,還不賴!當然啦,還是有很多不足的。

簡單的說一下上面**的幾個不足:

寫**的時候,尤其是寫函式的時候,第一步應該是檢查引數,對於不合理的引數要給出對應的處理方式,顯然我只是寫了index > 0的注釋,糊弄了一下

處理的內容比較簡單,沒有啥高階大氣上檔次的東西。

記憶體處理不嚴謹,要說上面兩個問題還可以修正一下,但是這個問題我是真的頭皮發麻,敲這幾行的同時自己也算是揀盡腦汁的去探索delete malloc free等的奧秘,雖有收穫,但始終做不到完善,聽到網上許多大佬講記憶體洩漏這樣的高階bug,我默默的留下了無能的眼淚。。。。

C 實現簡單的單向鍊錶

為了練習一下對鍊錶的理解,嘗試手動造輪子,實現單向鍊錶的右新增,左新增和刪除的功能。pragma once include using namespace std struct node 節點 class list 獲取鍊錶大小 void print 列印鍊錶 void int a 右新增 void...

單向鍊錶實現 插入節點 刪除節點操作

function node element 該類的功能包括插入刪除節點 在列表中查詢給定的值。function llist 插入新節點 向鍊錶中插入乙個節點,需要修改它前面的節點 前驅 使其指向新加入的節點,而新加入的節點則指向原來前驅指向的節點 find方法 遍歷鍊錶,查詢給定資料。如果找到資料,...

單向鍊錶 建立 插入 刪除 遍歷

include include include using namespace std struct list create 新建鍊錶 struct list insert struct list head,struct list temp 插入 struct list deletes struct...