文件順序存儲支持隨機訪問
① C語言:為什麼線性結構的順序存儲是一種隨機存取存儲結構謝謝
順序存儲中,一般一個元素緊緊地挨著另外的一個元素,設序號為i 的元素的存儲位置為Li,每個元素長度為d,則序號為j的元素的存儲位置為Li + d(j - i),這個式子對所有元素序號(下標)都是一樣的計算時間,也就是說,訪問任何一個元素的時間都是相同的,因此是隨機存取
當然,C語言中自然就是數組,一個接一個存放,結論一樣的
② 鏂囦歡紓佺洏綆$悊褰撲腑鑳介『搴忓瓨鍌錛岄殢鏈鴻塊棶鐨勬槸浠涔
欏哄簭鏂囦歡
③ 順序表訪問是隨機的怎麼理解
隨機訪問是訪問時間不變,實現訪問時間不變的存儲方式,線性序列或者順序表就是代表之一,因為是開辟的連續空間,所以其地址是連續的,所以在訪問時,只要給首地址加上偏移量就行,也就是所謂的下標。缺點是一旦申請就不能再動態增加空間,即不能在序列尾部再續空間。不能再續的原因可能是:整個存儲空間是對所有對象共享的,即序列本身無法把接下來尾部的空間都鎖定,讓別人都不能用。還有存儲空間一般都是按順序被使用的,序列尾部接下來的空間肯定也會被其它對象佔用。與其有明顯區別的就是鏈式存儲結構,因為元素的地址只能通過上一個元素才能獲取到,所以訪問元素的時間與存儲位置有關。優點是可以擴容。
隨機訪問還有一種結構是散列表hash結構,這種結構元素的方向時間是固定的,而且空間是可以擴容的。這種結構內部是線性序列和鏈表結合實現的。所以繼承了兩者的優點和缺點。
對序列表通過包裝實現動態擴容,是通過新建序列復制舊序列的數據實現的,效率低。
④ 線性表的順序存儲結構是隨機存取的
可以參考下面幾種解釋
1、解釋一:
順序存儲結構的地址在內存中是連續的所以可以通過計算地址實現隨機存取,與此相對 鏈式存儲結構的存儲地址不一定連續,只能通過第個結點的指針順序存取
2、解釋二:
線性表的順序存儲結構可以通過線性表的首址加偏移的方法計算出來第i個數據的位置a+i*sizeof(單個結構)而線性表的鏈式存儲結構要訪問第i個數據,就必須先訪問前面的i-1個數據
(4)文件順序存儲支持隨機訪問擴展閱讀:
線性表主要由順序表示或鏈式表示,在實際應用中,常以棧、隊列、字元串等特殊形式使用,順序表示指的是用一組地址連續的存儲單元依次存儲線性表的數據元素,稱為線性表的順序存儲結構或順序映像,順序存儲結構是隨機存取的。
鏈式表示指的是用一組任意的存儲單元存儲線性表中的數據元素,稱為線性表的鏈式存儲結構。它的存儲單元可以是連續的,也可以是不連續的。
⑤ C++中支持隨機訪問的容器有哪些
stl容器包含順序容器和關聯容器。關聯容器主要有vector,list,deque,關聯容器主要是pair、set、map、multiset和multimap,所以總共算是7種。
所謂隨機訪問,我的理解是按照數組的方式在內存中順序存放,只需要根據首地址和相應下標就能定址到相應的元素。
所以逐個分析如下:
vector的實現原理是數組,所以支持隨機訪問。
list的實現原理是雙向鏈表,所以不支持。
deque的實現原理是類似數組的雙端隊列,支持隨機訪問。
pair是個二元組,一共就兩個值,談不上隨機訪問。
set、multiset、map、multimap的實現原理是紅黑樹,不支持隨機訪問。
所以在上述七種容器中只有vector和deque兩種是支持隨機訪問的。