存储结构和存取结构的区别
存储 区别 结构 存取
2023-06-13 09:12:02 时间
正如题目所说,本节带大家理清这样一个知识点,即存储结构和存取结构,虽一字之差,却天差地别!
图 1 int a[4]={0,1,2,3};
![链式存储 0、1、2 和 3](http://ytso-blog-oss-img.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2021/07/20/20210720_60f643b454c15.gif)
图 2 链式存储 0、1、2 和 3
所谓存储结构,指的是数据在内存中真实的存储状态,具体可分为 2 类,即顺序存储结构和链式存储结构。而存取结构,指的是存取数据的方式,具体也可以分为 2 类,分别为顺序存取结构和随机存取结构。
举个例子,线性表的顺序存储结构是随机存取结构,而不是顺序存取结构;线性表的链式存储结构,又可以称为顺序存取结构,而不是随机存取结构。
我们知道,线性表的顺序存储结构,本质就是采用一块连续的存储空间将所有数据集中存储起来。不仅仅是 C 语言,很多种编程语言中,都在使用数组这种数据类型来表示顺序存储结构。
顺序存储结构最大的特点是,我们可以随机存或者取数据。例如,现有一个数组 a,其初始存储状态为:
![int a[4]={0,1,2,3};](http://ytso-blog-oss-img.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2021/07/20/20210720_60f643b449603.gif)
在此基础上,如果想取出元素 1,由于其位于数组下标为 1 的位置(数组下标通常由 0 开始计数),因此借助 a[1],就可以轻松实现目的;反之,如果想将元素 2 改存为元素 5,可以这样实现:
a[2] = 5;
显然借助顺序存储结构的特点,我们可以随机存或者取存储的各个元素。这也就解释了 线性表的顺序存储结构,又可以称为随机存取结构 。
和随机存取结构相对的,是顺序存取结构。通过前面的学习我们知道,采用链表存储的数据,它们所在的物理空间并不紧挨着,而是分散在内存中的各个位置。仍以存储 0、1、2、和 3 这 4 个元素为例,如果采用链式存储结构,则各个元素的存储状态可能为:
![链式存储 0、1、2 和 3](http://ytso-blog-oss-img.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2021/07/20/20210720_60f643b454c15.gif)
图 2 链式存储 0、1、2 和 3
如图 2 所示,如果我们想在链表中存或者取数据,就只能从链表头 H 开始,逐个遍历链表中的每个元素,直至找到目标元素。也就是说,从链表中存和取数据,必须从遵循各个元素在链表中存储的逻辑顺序,无法随机存取。
总之,线性表的顺序存储结构,又可以称为随机存取结构;而线性表的链式存储结构(以及栈结构和队列结构),又可以称为顺序存取结构。
23937.html
相关文章
- python字典和json字符串相互转化的方法_pythonjson文件存储
- Solr与ES多值存储的区别
- float的内存存储
- 微软 Azure 曝“设计缺陷”,暴露存储账户
- 谈谈sqlserver自定义函数与存储过程的区别
- Oracle存储过程和自定义函数详解
- 搭建nextcloud私有云存储网盘的教程详解
- mongodb存储数据和文档存储数据的区别详解大数据
- MySQL存储过程中使用游标的技巧(mysql存储过程游标)
- Linux下的网络存储之旅(linux网盘)
- 似数据结构MySQL数据结构:有效的存储与组织方式(mysql帮助类)
- 备份MySQL文件备份:靠它实现数据的安全存储(mysqlmysql文件)
- 如何将海量数据存储到Redis中(海量数据存储到redis)
- 中二维数组存储置Redis中的技巧(二维数组存到redis)
- 基于 Token 解决方案的 Redis 存储实践(token 存redis)
- SSO权限管理之Redis存储实现(sso权限存入redis)
- SSDB与Redis的异同从存储结构看(ssdb与redis区别)
- MySQL编码如何影响数据存储比较不同编码的差异(mysql 不同编码区别)
- 解决Redis数据存储如何设置实现自动启动(怎么自动启动redis库)
- MySQL中如何支持存储和处理中文数据(mysql不能村中文数据)
- 信息Redis存储大量信息的绝佳利器(redis能存多少条)
- 如何测试mysql触发器和存储过程
- MySQL存储引擎InnoDB与MyISAM的区别
- MySQL存储引擎MyISAM与InnoDB的9点区别
- 谈谈sqlserver自定义函数与存储过程的区别