05 顺序表的结构与实现

简介: 05 顺序表的结构与实现

1.顺序表的结构

一个顺序表的完整信息包括两部分,一部分是表中的元素集合,另一部分是为实现正确操作而需记录的信息,即有关表的整体情况的信息,这部分信息主要包括元素存储区的容量和当前表中已有的元素个数两项。

2.顺序表的两种基本实现方式

图a为一体式结构,存储表信息的单元与元素存储区以连续的方式安排在一块存储区里,两部分数据的整体形成一个完整的顺序表对象。

一体式结构整体性强,易于管理。但是由于数据元素存储区域是表对象的一部分,顺序表创建后,元素存储区就固定了。

图b为分离式结构,表对象里只保存与整个表有关的信息(即容量和元素个数),实际数据元素存放在另一个独立的元素存储区里,通过链接与基本表对象关联。

3.元素存储区替换

一体式结构由于顺序表信息区与数据区连续存储在一起,所以若想更换数据区,则只能整体搬迁,即整个顺序表对象(指存储顺序表的结构信息的区域)改变了。

分离式结构若想更换数据区,只需将表信息区中的数据区链接地址更新即可,而该顺序表对象不变。

4.元素存储区扩充

采用分离式结构的顺序表,若将数据区更换为存储空间更大的区域,则可以在不改变表对象的前提下对其数据存储区进行了扩充,所有使用这个表的地方都不必修改。只要程序的运行环境(计算机系统)还有空闲存储,这种表结构就不会因为满了而导致操作无法进行。人们把采用这种技术实现的顺序表称为动态顺序表,因为其容量可以在使用中动态变化。

扩充的两种策略

  • 每次扩充增加固定数目的存储位置,如每次扩充增加10个元素位置,这种策略可称为线性增长。
  • 特点:节省空间,但是扩充操作频繁,操作次数多。
  • 每次扩充容量加倍,如每次扩充增加一倍存储空间。
  • 特点:减少了扩充操作的执行次数,但可能会浪费空间资源。以空间换时间,推荐的方式。
目录
相关文章
|
前端开发 JavaScript
webpack 和 babel 实用教程【前端必备】
webpack 和 babel 实用教程【前端必备】
174 0
|
Kubernetes Unix Linux
kubeadm安装kubernetes集群
kubeadm安装kubernetes集群
|
机器学习/深度学习 人工智能 搜索推荐
探索人工智能在医疗诊断中的应用
随着人工智能技术的飞速发展,其在医疗领域的应用已成为改善诊断准确性和效率的有力工具。本文将深入探讨人工智能在医疗诊断中的具体应用,包括图像识别、疾病预测模型以及个性化治疗方案的制定。通过案例分析和最新研究成果,我们将展示AI如何辅助医生进行更准确的诊断,并讨论这一技术趋势对未来医疗服务的潜在影响。
uni-app 72聊天类封装(七)-完善发送消息状态
uni-app 72聊天类封装(七)-完善发送消息状态
94 3
|
存储 算法 Python
将题目与答案整合到一起的 python 代码
将题目与答案整合到一起的 python 代码
152 0
如何设置交换区swap空间
如何设置交换区swap空间
155 0
|
网络协议 定位技术
(7)UARTs和控制台
(7)UARTs和控制台
149 1
|
人工智能 机器人 UED
ai智能语音机器人系统都有什么功能?
第一、 智能AI电销机器人的并发量是多少啊?别人可以同时呼出几个? 通常情况下,智能AI电销机器人可以根据客户的需要选择客户需要的外呼并发量,最大可以实现一条宽带,一个主机,可以同时保持客户使用的灵活性,即能兼顾效率,也能兼顾成本控制。 第二、可以转人工?对话时可以打断机器人吗? 转人工和中途打断都是可以的,这些都是电话机器人的基本功能,个人不建议您用转人工的功能,因为每次转人工,机器人都要等到这通转接人工通话结束后才会进行下一通的呼出,这就大大降低了机器人的拨打效率了。所以留给后续人工跟进是最合理的。打断功能是客户说任何内容都能打断的,为了保证一个良好的用户体验度,一些无意义的语气
|
JavaScript 小程序 测试技术
vite环境变量配置
vite环境变量配置
513 0
|
SQL 存储 Oracle
【postgreSQL】psql工具特有的快捷命令2
【postgreSQL】psql工具特有的快捷命令2
212 0