隨機存取、順序存取、隨機存儲和順序存儲這四個概念是完全不一樣的,切不可將之混淆
很多人包括我可能認為隨機存取就是隨機存儲,順序存取就是順序存取,其實不是這樣。
下面完整的介紹一下這4個概念
存取結構:分為隨機存取和非隨機存取(又稱順序存取)
1、隨機存取就是直接存取,可以通過下標直接訪問的那種數據結構,與存儲位置無關,例如數組。非隨機存取
就是順序存取了,不能通過下標訪問了,只能按照存儲順序存取,與存儲位置有關,例如鏈表。
2、順序存取就是存取第N個數據時,必須先訪問前(N-1)個數據 (list),隨機存取就是存取第N個數據時,
不需要訪問前(N-1)個數據,直接就可以對第N個數據操作 (array)。
存儲結構:分為順序存儲和隨機存儲
1.順序存儲結構
在計算機中用一組地址連續的存儲單元依次存儲線性表的各個數據元素,稱作線性表的順序存儲結構。
順序存儲結構是存儲結構類型中的一種,該結構是把邏輯上相鄰的節點存儲在物理位置上相鄰的存儲單元中,
結點之間的邏輯關系由存儲單元的鄰接關系來體現。由此得到的儲結構為順序存儲結構,通常順序存儲結構是
借助於計算機程序設計語言(例如c/c++)的數組來描述的。
順序存儲結構的主要優點是節省存儲空間,因為分配給數據的存儲單元全用存放結點的數據(不考慮c/c++語言中數組需指定大小的情況),
結點之間的邏輯關系沒有占用額外的存儲空間。采用這種方法時,可實現對結點的隨機存取,即每一個結點對應一個序號,
由該序號可以直接計算出來結點的存儲地址。但順序存儲方法的主要缺點是不便於修改,對結點的插入、刪除運算時,
可能要移動一系列的結點。
2、隨機存儲結構
在計算機中用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元可以是連續的,也可以是不連續的)。
它不要求邏輯上相鄰的元素在物理位置上也相鄰。因此它沒有順序存儲結構所具有的弱點,但也同時失去了順序表可隨機存取的優點。
隨機存儲最典型的代表為鏈式存儲:
鏈式存儲結構特點
1、比順序存儲結構的存儲密度小 (每個節點都由數據域和指針域組成,所以相同空間內假設全存滿的話順序比鏈式存儲更多)。
2、邏輯上相鄰的節點物理上不必相鄰。
3、插入、刪除靈活 (不必移動節點,只要改變節點中的指針)。
4、查找結點時鏈式存儲要比順序存儲慢。
5、每個結點是由數據域和指針域組成。