轉(zhuǎn)載:http://www.cnblogs.com/fengty90/p/3768826.html
存儲結(jié)構(gòu)分四類:順序存儲尽爆、鏈接存儲怎顾、索引存儲 和 散列存儲。
順序結(jié)構(gòu)和鏈接結(jié)構(gòu)適用在內(nèi)存結(jié)構(gòu)中漱贱。? ??順序表每個單元都是按物理順序排列的槐雾,如果你想訪問那個單元你可以根據(jù)提供的指針等直接訪問到需要的東西,但是鏈表是邏輯連續(xù)不是物理連續(xù)幅狮,你要訪問必須從第一個指針一個一個往下找募强,直到找到位置
索引結(jié)構(gòu)和散列結(jié)構(gòu)適用在外存與內(nèi)存交互結(jié)構(gòu)。
順序存儲:在計算機中用一組地址連續(xù)的存儲單元依次存儲線性表的各個數(shù)據(jù)元素,稱作線性表的順序存儲結(jié)構(gòu)彪笼。
特點:
1钻注、隨機存取表中元素。
2配猫、插入和刪除操作需要移動元素。
鏈接存儲:在計算機中用一組任意的存儲單元存儲線性表的數(shù)據(jù)元素(這組存儲單元可以是連續(xù)的,也可以是不連續(xù)的)杏死。它不要求邏輯上相鄰的元素在物理位置上也相鄰.因此它沒有順序存儲結(jié)構(gòu)所具有的弱點,但也同時失去了順序表可隨機存取的優(yōu)點泵肄。
特點:
1、比順序存儲結(jié)構(gòu)的存儲密度小 (每個節(jié)點都由數(shù)據(jù)域和指針域組成淑翼,所以相同空間內(nèi)假設全存滿的話順序比鏈式存儲更多)腐巢。
2、邏輯上相鄰的節(jié)點物理上不必相鄰玄括。
3冯丙、插入、刪除靈活 (不必移動節(jié)點遭京,只要改變節(jié)點中的指針)胃惜。
4、查找結(jié)點時鏈式存儲要比順序存儲慢哪雕。
5船殉、每個結(jié)點是由數(shù)據(jù)域和指針域組成。
索引存儲:除建立存儲結(jié)點信息外斯嚎,還建立附加的索引表來標識結(jié)點的地址利虫。索引表由若干索引項組成。
特點:
索引存儲結(jié)構(gòu)是用結(jié)點的索引號來確定結(jié)點存儲地址堡僻,其優(yōu)點是檢索速度快糠惫,缺點是增加了附加的索引表,會占用較多的存儲空間。
散列存儲:散列存儲钉疫,又稱hash存儲硼讽,是一種力圖將數(shù)據(jù)元素的存儲位置與關鍵碼之間建立確定對應關系的查找技術。
散列法存儲的基本思想是:由節(jié)點的關鍵碼值決定節(jié)點的存儲地址陌选。散列技術除了可以用于查找外理郑,還可以用于存儲蹄溉。
特點:
散列是數(shù)組存儲方式的一種發(fā)展,相比數(shù)組您炉,散列的數(shù)據(jù)訪問速度要高于數(shù)組柒爵,因為可以依據(jù)存儲數(shù)據(jù)的部分內(nèi)容找到數(shù)據(jù)在數(shù)組中的存儲位置,進而能夠快速實現(xiàn)數(shù)據(jù)的訪問赚爵,理想的散列訪問速度是非常迅速的棉胀,而不像在數(shù)組中的遍歷過程,采用存儲數(shù)組中內(nèi)容的部分元素作為映射函數(shù)的輸入冀膝,映射函數(shù)的輸出就是存儲數(shù)據(jù)的位置唁奢,這樣的訪問速度就省去了遍歷數(shù)組的實現(xiàn),因此時間復雜度可以認為為O(1)窝剖,而數(shù)組遍歷的時間復雜度為O(n)麻掸。