資料結構思維筆記(六)雙鏈表

2021-09-18 00:15:49 字數 1209 閱讀 2177

1.雙鏈表資料結構

listdeque介面的雙鏈表實現。[…] 所有的操作都能像雙向列表那樣執行。索引該列表中的操作將從頭或者尾遍歷列表,使用更接近指定索引的那個。

linkedlist物件包含指向列表的第乙個和最後乙個元素的鏈結。

所以我們可以從列表的任意一端開始,並以任意方向遍歷它。因此,我們可以在常數時間內,在列表的頭部和末尾新增和刪除元素!

2.arraylist,linkedlist和雙鏈表的對比

myarraylistmylinkedlist雙鏈表

add(末尾)1n

1add(開頭)

n(剩餘的都往後)11

add(一般)nn

nget/set1nn

indexof/lastindexofnnn

isempty/size111

remove(末尾)1n

1remove(開頭)n1

1remove(一般)nn

n3.結構的選擇

對於頭部插入和刪除,雙鏈表的實現優於arraylist。對於尾部插入和刪除,都是一樣好。所以,arraylist唯一優勢是getset,鍊錶中它需要線性時間,即使是雙鏈表(根據實際需要解決的問題來看)。

如果你知道,你的應用程式的執行時間取決於getset元素的所需時間,則arraylist可能是更好的選擇。如果執行時間取決於在開頭或者末尾附加新增和刪除元素,linkedlist可能會更好。

但請記住,這些建議是基於大型問題的增長級別。還有其他因素要考慮:

總而言之,演算法分析為資料結構的選擇提供了一些指南,但只有:

作為一名軟體工程師,在較長的職業生涯中,你幾乎不必考慮這種情況。

Early Orders 資料結構 思維

early orders 資料結構 思維 題目大意 給你乙個序列,讓你找乙個字典序最小的子串行,要求這子串行是乙個前k個數的全排列。題解 難度不太,冷靜思考。我用的優先佇列寫的,寫起來還是有點噁心,碼量不大,要注意很多細節。include define lson id 1 define rson i...

資料結構筆記 雙鏈表

單鏈表從某個結點出發只能順指標向後尋查其他的結點。若要尋查結點的直接前驅,則必須從表頭指標出發。位克服單鏈表的單向性的缺點,可利用雙鏈表。雙鏈表的模型 typedef struct nodenode,linklist 雙鏈表也可以有迴圈表 bool initlinklist linklist l l...

資料結構思維筆記(十)Map介面

在接下來的幾個練習中,我介紹了map介面的幾個實現。其中乙個基於雜湊表,這可以說是所發明的最神奇的資料結構。另乙個是類似的treemap,不是很神奇,但它有附加功能,它可以按順序迭代元素。我們從乙個map開始,它使用鍵值對的list實現。1.實現mylinearmap 簡單來說,就是繼承map,放入...