用c 實現單向鍊錶和雙向鍊錶

2021-07-11 22:48:03 字數 1211 閱讀 4968

鍊錶是一種非常基礎的資料結構,本身也比較靈活,突破了陣列在一開始就要確定長度的限制,能夠做到隨時使用隨時分配記憶體。同時還有新增,刪除,查詢等功能。

總的來說,鍊錶是由幾個模組構成的。

一,單向鍊錶

//鍊錶基本元素

struct node

;

//建立節點

node * current=nullptr;

node * head=nullptr;//用以存放第乙個節點,有了這麼乙個首節點後就相當於有了乙個基點

node * pre=nullptr;

int n;

while (cin >> n, n != -1)//輸入-1時結束建立鍊錶

//遍歷節點

current = head;

while (current

!= nullptr)

//刪除節點

current = head;

while (current != nullptr)

二,雙向鍊錶

雙向鍊錶相對於單向鍊錶來說更為靈活方便,且實現起來也不是很難,在單向鍊錶的基礎上加上previous的指標就行了。

//基本元素

struct node

;

//具體實現

node * head=nullptr;

node * current=nullptr;

node * pre=nullptr;

while (cin >> n, n !=-1)

pre = current;//這裡沒有寫成 current=current->next(之前就有犯了這種錯),否則之後申請了新的記憶體之後指向就發生錯誤了

}current->next = head;

head->pre = current;

current = head->pre;

while (current != head)

current = head;

//int count = 0;

while (current != nullptr)

以上只是鍊錶的基本實現,關於如何實現其他一些功能,我們以後再談。

單向鍊錶和雙向鍊錶

1.單向鍊錶 單向鍊錶只可向乙個方向遍歷。查詢乙個節點的時候需要從第乙個節點開始每次訪問下乙個節點,一直訪問到需要的位置。也可以提前把乙個節點的位置另外儲存起來,然後直接訪問。2.雙向鍊錶 可以從任何乙個節點訪問前乙個節點,也可以訪問後乙個節點,以至整個鍊錶。一般是在需要大批量的另外儲存資料在鍊錶中...

單向鍊錶和雙向鍊錶

一 鍊錶是什麼?單向鍊錶linked list 是一種在物理上非連續 非順序的資料結構,由若干節點 node 所組成。而節點包括兩部分,一部分是存放資料的變數data,另一部分是指向下乙個節點的指標next。鍊錶的第1個節點被稱為頭節點,最後1個節點被稱為尾節點,尾節點的next指標指向空。注意 鍊...

單向鍊錶和雙向鍊錶區別 雙向鍊錶

一開始確實被這個雙向鍊錶整暈了,node裡面不停套node,簡直無限套娃,讓人不知道該怎麼下手。後來看了資料結構與演算法分析這本書的 才算整明白。我把鍊錶分成了三個部分 第一部分是node.node是乙個由兩根指標,以及我們需要儲存的資料構成的結構體。這個node就是無限套娃的起源,也是鍊錶用於儲存...