文件顺序存储支持随机访问
① 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两种是支持随机访问的。