C 常用資料結構

2021-09-17 01:57:47 字數 1098 閱讀 5580

資料結構

型別及備註

插入和刪除

查詢array

順序儲存的線性表、定長

不支援(這裡的插入與刪除指會更改表長的行為)

o(n)

linkedlist

鏈式儲存的線性表、不定長

o(1)

o(n)

list

順序儲存的線性表、不定長、動態擴容

o(n),結尾則是o(1)

o(n)

stack

棧、不定長、動態擴容

o(1)

只能訪問棧頂

queue

佇列、不定長、動態擴容

o(1)

只能訪問佇列頭部

dictionary

儲存鍵值對、使用開雜湊法、不定長、動態擴容、長度總為質數

o(1)

o(1)

sortedlist

儲存鍵值對、內部使用陣列實現、保持有序、不定長

o(logn)

o(logn)

sorteddictionary

儲存鍵值對、內部使用紅黑樹實現、保持有序、不定長

o(logn)

o(logn)

hashset

使用開雜湊法、不定長、動態擴容、長度總為質數、是不含值的字典,故複雜度和它完全相同

o(1)

o(1)

sortedset

內部使用紅黑樹實現、保持有序、不定長、是不含值的sorteddictionary,故複雜度和它完全相同

o(logn)

o(logn)

完美的資料結構應該具備較高的插入、刪除效率和查詢效率

對於佇列,直接使用對應的資料結構即可

如果資料來源是鍵值對,那麼可選項本來就不多。首先當然是型別安全的字典,然後,如果總是希望集合處於有序狀態,從sortedlist和sorteddictionary中進行權衡

另外對於鍵值對的情況,如果你的資料來源資料很少,可以考慮使用list>替代字典,在資料量小的情形,線性和常熟時間複雜度沒有什麼區別,但list>比字典初始化要做的事情少多了

C 常用資料結構

array arraylist list linkedlist queue stack dictionary 陣列array特點 儲存在連續的記憶體上 元素型別相同 直接通過下表訪問 建立時需要指定陣列長度 根據下標索引元素並進行相關操作速度快,但插入或刪除元素比較麻煩 arraylist 非泛型集...

常用資料結構

文章參考 資料結構 c語言版 嚴蔚敏 線性表 有頭有尾,中間節點有前驅有後繼 定義 一組連續的儲存單元依次儲存線性表的資料元素。定長順序表 typedef struct sqlist psqlist 不定長順序表 typedef struct dsqlist dsqlist,pdsqlist 單鏈表...

常用資料結構

function delete array element arr,pos for i pos 1 i length 1 i array pop arr return arr pos 3 echo 除第位置上的元素後 echo implode delete array element arr,pos...