鍊錶是一種非常基礎的資料結構,本身也比較靈活,突破了陣列在一開始就要確定長度的限制,能夠做到隨時使用隨時分配記憶體。同時還有新增,刪除,查詢等功能。
總的來說,鍊錶是由幾個模組構成的。
一,單向鍊錶
//鍊錶基本元素
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就是無限套娃的起源,也是鍊錶用於儲存...