C 常用資料結構

2021-10-04 13:23:37 字數 1311 閱讀 5718

array、arraylist、list、linkedlist、queue、stack、dictionary

陣列array

特點:

儲存在連續的記憶體上

元素型別相同

直接通過下表訪問

建立時需要指定陣列長度

根據下標索引元素並進行相關操作速度快,但插入或刪除元素比較麻煩

arraylist(非泛型集合)
特點:

不需要指定長度,其長度是依據儲存的資料動態增長和縮減

可以儲存不同型別的元素,它是直接把元素當做object來處理

因儲存不同型別的元素,集合的裝箱和拆箱操作是十分頻繁的,對cpu效能影響較大

不安全性,把元素當做object來處理,有可能發生型別不匹配的情況

list(泛型集合)
不需要指定長度

元素型別都相同

確保型別安全

較少裝箱與拆箱的操作

與陣列比較像,其實泛型集合內部是通過array來實現的,它不確定長度,其長度是根據儲存的元素的長度來建立陣列儲存元素,當新增的元素長度超過陣列的剩餘長度,就會建立乙個倍增後的陣列來儲存元素

linkedlist
特點:

儲存在不連續的記憶體上,索引的速度慢

對鍊錶的插入或刪除無需調整結構容量,不需要移動元素,只是改變部分元素的指向即可

queue(佇列)
特點:

先進先出

預設初始容量32,增長因子為2.0

使用enqueue判斷佇列長度是否夠用,若不夠,依據增長因子增加容量

stack(棧)
特點:

後進先出

預設容量是10

使用pop和push實現進出棧的操作

dictionary(字典)
特點:

字典中每乙個元素值都有乙個鍵值與之對應,根據鍵值查詢速度很快

建立乙個字典,內部會有兩個陣列分別儲存鍵值和元素

不能包含重複的鍵

使用場景
array	被處理的元素數量確定且需要使用下標

arraylist 不建議使用

list 元素數量不確定

linkedlist 數量不確定,經常需要修改

queue 元素先進先出

stack 先進後出

dictionary 鍵值對,快速查詢

C 常用資料結構

資料結構 型別及備註 插入和刪除 查詢array 順序儲存的線性表 定長 不支援 這裡的插入與刪除指會更改表長的行為 o n linkedlist 鏈式儲存的線性表 不定長 o 1 o n list 順序儲存的線性表 不定長 動態擴容 o n 結尾則是o 1 o n stack 棧 不定長 動態擴容...

常用資料結構

文章參考 資料結構 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...