存儲結構分四類:順序存儲、鏈接存儲、索引存儲 和 散列存儲。
順序結構和鏈接結構適用在內存結構中。
索引結構和散列結構適用在外存與內存交互結構。
順序存儲:在計算機中用一組地址連續的存儲單元依次存儲線性表的各個數據元素,稱作線性表的順序存儲結構。
特點:
1、隨機存取表中元素。
2、插入和刪除操作需要移動元素。
鏈接存儲:在計算機中用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元可以是連續的,也可以是不連續的)。它不要求邏輯上相鄰的元素在物理位置上也相鄰.因此它沒有順序存儲結構所具有的弱點,但也同時失去了順序表可隨機存取的優點。
特點:
1、比順序存儲結構的存儲密度小 (每個節點都由數據域和指針域組成,所以相同空間內假設全存滿的話順序比鏈式存儲更多)。
2、邏輯上相鄰的節點物理上不必相鄰。
3、插入、刪除靈活 (不必移動節點,只要改變節點中的指針)。
4、查找結點時鏈式存儲要比順序存儲慢。
5、每個結點是由數據域和指針域組成。
索引存儲:除建立存儲結點信息外,還建立附加的索引表來標識結點的地址。索引表由若干索引項組成。
特點:
索引存儲結構是用結點的索引號來確定結點存儲地址,其優點是檢索速度快,缺點是增加了附加的索引表,會占用較多的存儲空間。
散列存儲:散列存儲,又稱hash存儲,是一種力圖將數據元素的存儲位置與關鍵碼之間建立確定對應關系的查找技術。
散列法存儲的基本思想是:由節點的關鍵碼值決定節點的存儲地址。散列技術除了可以用於查找外,還可以用於存儲。
特點:
散列是數組存儲方式的一種發展,相比數組,散列的數據訪問速度要高於數組,因為可以依據存儲數據的部分內容找到數據在數組中的存儲位置,進而能夠快速實現數據的訪問,理想的散列訪問速度是非常迅速的,而不像在數組中的遍歷過程,采用存儲數組中內容的部分元素作為映射函數的輸入,映射函數的輸出就是存儲數據的位置,這樣的訪問速度就省去了遍歷數組的實現,因此時間復雜度可以認為為O(1),而數組遍歷的時間復雜度為O(n)。