數組和鏈表是兩種基本的數據結構,他們在內存存儲上的表現不一樣,所以也有各自的特點。
下面總結一下特點和區別。
數組的特點
- 在內存中,數組是一塊連續的區域。
- 數組需要預留空間,在使用前要先申請占內存的大小,可能會浪費內存空間。
- 插入數據和刪除數據效率低,插入數據時,這個位置后面的數據在內存中都要向后移。刪除數據時,這個數據后面的數據都要往前移動。
- 隨機讀取效率很高。因為數組是連續的,知道每一個數據的內存地址,可以直接找到給地址的數據。
- 並且不利於擴展,數組定義的空間不夠時要重新定義數組。
鏈表的特點
- 在內存中可以存在任何地方,不要求連續。
- 每一個數據都保存了下一個數據的內存地址,通過這個地址找到下一個數據。
- 查找數據時效率低,因為不具有隨機訪問性,所以訪問某個位置的數據都要從第一個數據開始訪問,然后根據第一個數據保存的下一個數據的地址找到第二個數據,以此類推。 要找到第三個人,必須從第一個人開始問起。
- 不指定大小,擴展方便。鏈表大小不用定義,數據隨意增刪。
各自的優缺點
數組的優點
- 隨機訪問性強
- 查找速度快
數組的缺點
- 插入和刪除效率低
- 可能浪費內存
- 內存空間要求高,必須有足夠的連續內存空間。
- 數組大小固定,不能動態拓展
鏈表的優點
- 插入刪除速度快
- 內存利用率高,不會浪費內存
- 大小沒有固定,拓展很靈活。
鏈表的缺點
- 不能隨機查找,必須從第一個開始遍歷,查找效率低