陣列(array):
1、陣列儲存在連續的記憶體上
2、陣列的元素型別必須相同
3、陣列可以直接通過下標訪問
4、查詢與修改元素的速度非常快
5、必須在宣告時指定長度
動態陣列(arraylist):
1、arraylist的底層其實就是乙個陣列
2、不必在宣告時指定長度,會根據儲存的資料動態增加或減少長度
3、插入和刪除乙個元素時,會移動它之後所有元素的位置,效率低,頻繁進行插入刪除元素時推薦使用linkedlist
4、arraylist會把所有元素都當做object處理,因此可以儲存不同型別的元素
5、arraylist是非型別安全的,而且在插入和刪除元素時會進行拆箱和裝箱的操作,消耗效能,效率低
泛型list:
1、list是arraylist的泛型等效類
2、需要在宣告時通過泛型指定型別
3、沒有拆箱裝箱操作,因此在大多數情況下list要比arraylist效率高且型別安全
雙向鍊錶(linkedlist):
1、鍊錶在記憶體中的空間不是連續的,每塊空間稱作乙個節點,每個節點都存有與它之前和之後相連線的節點的位址,因此向鍊錶中新增和刪除元素時只需要更改相關節點儲存的位址的指向,效率高
2、查詢元素時不能通過下標訪問,只能從頭開始通過位址按順序查詢,效率低
堆疊(stack):
先進後出原則,最先插入的元素最後被訪問,最後被插入的元素最先被訪問
佇列(queue):
先進先出的原則,最先插入的元素最先被訪問,最後插入的元素最後被訪問
字典(dictionary):
1、建立字典時需要指定key和value的型別
2、字典中的key的值必須唯一,value的值不唯一
3、可以通過key快速查詢對應的value,速度快,但是消耗記憶體
C 中常見的資料結構簡單介紹
陣列 array 1 陣列儲存在連續的記憶體上 2 陣列的元素型別必須相同 3 陣列可以直接通過下標訪問 4 查詢與修改元素的速度非常快 5 必須在宣告時指定長度 動態陣列 arraylist 1 arraylist的底層其實就是乙個陣列 2 不必在宣告時指定長度,會根據儲存的資料動態增加或減少長度...
資料結構中常見排序演算法複習
思想 從前往後遍歷,每次把未排序陣列中最大的元素交換到陣列最後。實現 2個for迴圈,第乙個迴圈表示冒泡次數,第二個迴圈從前往後遍歷未排序陣列,如果前面的元素大於後面的元素,交換,直至到達已排序部分的最前面 void bubblesort int a,int left,int right 快速排序也...
前端面試中常見的資料結構題
一 鍊錶 1 如何判斷乙個煉表裡有沒有環 思路 快慢指標,乙個走的快,乙個走的慢,那麼若干步以後,快慢指標會相遇。definition for singly linked list.function listnode val var hascycle function head var slow h...