分類:html
時間和空間複雜度:python
數組是能夠再內存中連續存儲多個元素的結構,在內存中的分配也是連續的,數組中的元素經過數組下標進行訪問,數組下標從0開始。算法
適用場景:數組
優勢:數據結構
缺點:多線程
時間複雜度 | O() |
---|---|
Access | O(1) |
Insert | O(n) |
Delete | O(n) |
詳見:app
鏈表是物理存儲單元上非連續的、非順序的存儲結構;spa
數據元素的邏輯順序是經過鏈表的指針地址實現,每一個元素(結點)包含兩個域,一個是存儲元素的數據域 (內存空間),另外一個是指向下一個結點地址的指針域。線程
根據指針的指向,鏈表能造成不一樣的結構,例如單鏈表,雙向鏈表,循環鏈表等。3d
鏈表插入Node:
鏈表刪除Node:
時間複雜度 | O() |
---|---|
space | O(1) |
prepend | O(1) |
append | O(1) |
lookup | O(n) |
insert | O(1) |
delete | O(1) |
棧是一種特殊的線性表;僅能在線性表的一端操做,棧頂容許操做,棧底不容許操做。
棧的特色:
隊列與棧同樣,也是一種線性表;隊列能夠在一端添加元素,在另外一端取出元素,也就是「先進先出」;從一端放入元素的操做稱爲入隊,取出元素爲出隊 ;
使用情景:
雙端隊列和普通隊列區別在於:==隊頭和隊尾均可以插入和刪除元素;==
優先隊列:正常⼊、按照優先級出
樹是一種數據結構,它是由n(n>=1)個有限節點組成一個具備層次關係的集合。把它叫作 「樹」 是由於它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。
樹的特色:
二叉樹:
二叉搜索樹:
堆是一種比較特殊的數據結構,能夠被看作一棵樹的數組對象,具備如下的性質:
小頂堆特色:
大頂堆特色:
圖是由結點的有窮集合V和邊的集合E組成。其中,爲了與樹形結構加以區別,在圖結構中經常將結點稱爲頂點,邊是頂點的有序偶對;若兩個頂點之間存在一條邊,就表示這兩個頂點具備相鄰關係。
哈希表,是根據關鍵碼和值 (key和value) 直接進行訪問的數據結構,哈希底層算法是取模(取餘)運算,因此會產生哈希衝突。
哈希衝突解決:拉鍊法