陣列和鍊錶是兩種基本的資料結構,他們在記憶體儲存上的表現不一樣,所以也有各自的特點
1.在記憶體中,陣列是一塊連續的區域
2.陣列需要預留空間
在使用前需要提前申請所佔記憶體的大小,這樣不知道需要多大的空間,就預先申請可能會浪費記憶體空間,即陣列空間利用率低
ps:陣列的空間在編譯階段就需要進行確定,所以需要提前給出陣列空間的大小(在執行階段是不允許改變的)
3.在陣列起始位置處,插入資料和刪除資料效率低。
插入資料時,待插入位置的的元素和它後面的所有元素都需要向後搬移
刪除資料時,待刪除位置後面的所有元素都需要向前搬移
4.隨機訪問效率很高,時間複雜度可以達到o(1)
因為陣列的記憶體是連續的,想要訪問那個元素,直接從陣列的首位址處向後偏移就可以訪問到了
5.陣列開闢的空間,在不夠使用的時候需要擴容,擴容的話,就會涉及到需要把舊陣列中的所有元素向新陣列中搬移
6.陣列的空間是從棧分配的
隨機訪問性強,查詢速度快,時間複雜度為o(1)
1.頭插和頭刪的效率低,時間複雜度為o(n)
2.空間利用率不高
3.記憶體空間要求高,必須有足夠的連續的記憶體空間
4.陣列空間的大小固定,不能動態拓展
3.查詢資料時效率低,時間複雜度為o(n)
因為鍊錶的空間是分散的,所以不具有隨機訪問性,如要需要訪問某個位置的資料,需要從第乙個資料開始找起,依次往後遍歷,直到找到待查詢的位置,故可能在查詢某個元素時,時間複雜度達到o(n)
4.空間不需要提前指定大小,是動態申請的,根據需求動態的申請和刪除記憶體空間,擴充套件方便,故空間的利用率較高
5.任意位置插入元素和刪除元素效率較高,時間複雜度為o(1)
6.鍊錶的空間是從堆中分配的
1.任意位置插入元素和刪除元素的速度快,時間複雜度為o(1)
2.記憶體利用率高,不會浪費記憶體
3.鍊錶的空間大小不固定,可以動態拓展
隨機訪問效率低,時間複雜度為0(n)
對於想要快速訪問資料,不經常有插入和刪除元素的時候,選擇陣列
對於需要經常的插入和刪除元素,而對訪問元素時的效率沒有很高要求的話,選擇鍊錶
資料結構之陣列和鍊錶的區別
陣列 array 一 陣列特點 所謂陣列,就是相同資料型別的元素按一定順序排列的集合 陣列的儲存區間是連續的,占用記憶體比較大,故空間複雜的很大。但陣列的二分查詢時間複雜度小,都是o 1 陣列的特點是 查詢簡單,增加和刪除困難 1.1 在記憶體中,陣列是一塊連續的區域 1.2 陣列需要預留空間 在使...
資料結構陣列 鍊錶和游標
c c 中陣列要定義好邊界 為了靈活用指標式的鍊錶 而很多語言是不能操縱指標,所以用游標陣列,那麼問題又回到了原點又有邊界了。以多項式為例,設多項式為p a 1xn1 a2xn2 a ixni 陣列陣列中儲存多項式是乙個物件p中有陣列b maxdegree 1 儲存多項式的係數a c 儲存多項式的最...
資料結構 陣列與鍊錶的優缺點和區別
陣列 是將元素在記憶體中連續存放,由於每個元素占用記憶體相同,可以通過下標迅速訪問陣列中任何元素。但是如果要在陣列中增加乙個元素,需要移動大量元素,在記憶體中空出乙個元素的空間,然後將要增加的元素放在其中。同樣的道理,如果想刪除乙個元素,同樣需要移動大量元素去填掉被移動的元素。如果應用需要快速訪問資...