化妆品设计网站,富阳网站开发,最好的国内科技网站建设,荣耀手机商城官方网站下载顺序表
在程序中#xff0c;经常需要将一组#xff08;通常是同为某个类型的#xff09;数据元素作为整体管理和使用#xff0c;需要创建这种元素组#xff0c;用变量记录它们#xff0c;传进传出函数等。一组数据中包含的元素个数可能发生变化#xff08;可以增加或删…顺序表
在程序中经常需要将一组通常是同为某个类型的数据元素作为整体管理和使用需要创建这种元素组用变量记录它们传进传出函数等。一组数据中包含的元素个数可能发生变化可以增加或删除元素。
根据线性表的实际存储方式分为两种实现模型
顺序表将元素顺序地存放在一块连续的存储区里元素间的顺序关系由它们的存储顺序自然表示。
链表将元素存放在通过链接构造起来的一系列存储块中。
顺序表的形式 a表示的是顺序表的基本形式数据元素本身连续存储每个元素所占的存储单元大小固定相同元素的下标是其逻辑地址而元素存储的物理地址实际内存地址可以通过存储区的起始地址Loc (e0)加上逻辑地址第i个元素与存储单元大小c的乘积计算而得即
Loc(ei) Loc(e0) c*i
故访问指定元素时无需从头遍历通过计算便可获得对应地址其时间复杂度为O(1)。
如果元素的大小不统一则须采用图b的元素外置的形式将实际数据元素另行存储而顺序表中各单元位置保存对应元素的地址信息即链接。由于每个链接所需的存储量相同通过上述公式可以计算出元素链接的存储位置而后顺着链接找到实际存储的数据元素。注意图b中的c不再是数据元素的大小而是存储一个链接地址所需的存储量这个量通常很小。
图b这样的顺序表也被称为对实际数据的索引这是最简单的索引结构。
顺序表的两种实现 图a为一体式结构存储表信息的单元与元素存储区以连续的方式安排在一块存储区里两部分数据的整体形成一个完整的顺序表对象。
一体式结构整体性强易于管理。但是由于数据元素存储区域是表对象的一部分顺序表创建后元素存储区就固定了。
图b为分离式结构表对象里只保存与整个表有关的信息即容量和元素个数实际数据元素存放在另一个独立的元素存储区里通过链接与基本表对象关联。
顺序表的操作
添加元素
为顺序表增加新元素111的三种方式 a. 尾端加入元素时间复杂度为O(1) b. 非保序的加入元素不常见时间复杂度为O(1) c. 保序的元素加入时间复杂度为O(n)
删除元素 a. 删除表尾元素时间复杂度为O(1) b. 非保序的元素删除不常见时间复杂度为O(1) c. 保序的元素删除时间复杂度为O(n)
Python中的顺序表
Python中的list和tuple两种类型采用了顺序表的实现技术具有前面讨论的顺序表的所有性质。 tuple是不可变类型即不变的顺序表因此不支持改变其内部状态的任何操作而其他方面则与list的性质类似。