面試-陣列和連結串列的區別

牟小喵發表於2020-12-04
陣列連結串列
隨機訪問速度比較快,增刪慢隨機訪問比較慢,增刪比較快
(靜態)陣列從棧中分配空間, 對於程式設計師方便快速,但是自由度小連結串列從堆中分配空間, 自由度大
陣列必須事先定義固定的長度(元素個數),不能適應資料動態地增減的情況連結串列動態地進行儲存分配,可以適應資料動態地增減的情況
在記憶體中必須連續在記憶體中不需要連續,可以存在任何地方
讀取O(1)讀取O(n)
插入、刪除O(n)插入、刪除O(1)

連結串列:
在這裡插入圖片描述
堆:
棧:

堆與棧的區別很明顯:

        1.棧記憶體儲存的是區域性變數而堆記憶體儲存的是實體;

        2.棧記憶體的更新速度要快於堆記憶體,因為區域性變數的生命週期很短;

        3.棧記憶體存放的變數生命週期一旦結束就會被釋放,而堆記憶體存放的實體會被垃圾回收機制不定時的回收。

相關文章