1. 程式人生 > >陣列、連結串列和雜湊表

陣列、連結串列和雜湊表

陣列和連結串列的區別:

 1、陣列是將元素在記憶體中連續存放。
      連結串列中的元素在記憶體中不是順序儲存的,而是通過存在元素中的指標聯絡到一起。
 2、陣列必須事先定義固定的長度,不能適應資料動態地增減的情況。
      連結串列動態地進行儲存分配,可以適應資料動態地增減的情況。
 3、(靜態)陣列從棧中分配空間, 對於程式設計師方便快速,但是自由度小。
      連結串列從堆中分配空間, 自由度大但是申請管理比較麻煩。

一、當進行資料查詢時。陣列可以直接通過下標迅速訪問陣列中的元素,而連結串列則需要遍歷查詢。所以陣列的查詢效率會比連結串列的高。
二、當進行增加或刪除元素時。在陣列中增刪元素,需要移動大量元素。而連結串列只需改動元素中的指標即可實現,所以連結串列的效率會比陣列高。

雜湊的特點優勢:

所謂的hash,簡單的說就是雜湊,即將輸入的資料通過hash函式得到一個key值,輸入的資料儲存到陣列中下標為key值的陣列單元中去。
不相同的資料通過hash函式有可能得到相同的key值。這時候,就產生了hash衝突。解決hash衝突的方式有兩種。一種是拉鍊法,即讓產生衝突的hash地址指向一個連結串列,將具有相同的key值的資料存放到連結串列中;另一種是建立一個公共溢位區,將所有產生衝突的資料都存放到公共溢位區,從而使問題得到解決。