1. 程式人生 > >數組、鏈表、哈希表

數組、鏈表、哈希表

簡單的 哈希表 刪除元素 方便 行存儲 輸入 元素 優點 自由度

程序中,存放指定的數據最常用的數據結構有兩種:數組和鏈表。

數組和鏈表的區別:

1,數組是將元素在內存中連續存放。

鏈表中的元素在內存中不是順序存儲的,而是通過存在元素中的指針聯系到一起。

2,數組必須事先定義固定的長度,不能適應數據動態的增減的情況。當數據增加時,可能超出原先定義的元素個數;當數據減少時,造成內存浪費;

鏈表動態地進行存儲分配,可以適應數據動態地增減的情況。

3,(靜態)數組從棧中分配空間,對於程序員方便快速,但是自由度小;

鏈表從堆中分配空間,自由度大但是申請管理比較麻煩。

數組和鏈表在存儲數據方面到底誰好?根據數組和鏈表的特性,分兩種情況討論:

1,當進行數據查詢時,數組可以直接通過下標迅速訪問數組中的元素。

而鏈表則需要從第一個元素開始一直找到需要的元素位置,

顯然,數組的查詢效率會比鏈表的高。

2,當進行增加或刪除元素時,在數組中增加一個元素,需要移動大量元素,在內存中空出一個元素的空間,然後將要增加的元素放在其中。同樣,如果想刪除一個元素,需要移動大量去填掉被移動的元素,而鏈表只需改動元素中的指針即可實現增加或刪除元素。

那麽哈希表,是既能具備數組的快速查詢的優點,又能融合鏈表方便快捷的增加刪除元素的優勢。

所謂的hash,簡單的說就是散列,即將輸入的數據通過hash函數得到一個key值,輸入的數據存儲到數組中下標的key值的數組單元中去。

數組、鏈表、哈希表