课堂笔记:数据结构之顺序表(顺序表)

上节课作业的错误:

  1. 采用顺序存储结构表示数据时,相邻的数据元素的存储地址:一定连续。
  2. 算法的可行性是指算法中的每一步都可以通过已经实现的基本运算的有限次执行得以实现。
  3. 确定性:算法的每一步必须有确切的含义,无二义性。算法的执行对应着的相同的输入仅有唯一路径。

一、线性表的逻辑结构

1、数据如何存储?

  • 数据结构中,数据的基本存储方式主要是利用数组和链表实现的
  • 数据的存储跟操作密切相关,存储方式没有最好的,只有最合适的。

2、线性表的基本操作

线性表的定义:线性表是具有相同数据类型的n个数据元素的有限序列。

1. 线性表的初始化:Init_List(L)

初始条件:表L不存在

操作结果:构造一个空的线性表
2. 求线性表的长度:Length_List(L)

初始条件:表L存在

操作结果:返回线性表中所含元素的个数

3. 取表元:Get_List(L,i)

初始条件:表L存在且1<=i<=Length_List(L)

操作结果:返回线性表L中的第i个元素的值或地址
4. 按值查找:Locate_List(L,x)

初始条件:线性表L存在,x是给定的数据元素

操作结果:返回在L中首次出现的值为x的那个元素的序号或地址,称为查找成功; 否则,在L中未找到值为x的数据元素,返回一特殊值表示查找失败。
5. 插入操作:Insert_List(L,i,x)

初始条件:线性表L存在,插入位置正确(1<=i<=n+1,n为插入前的表长)。

操作结果:在线性表L的第i个位置上插入一个值为x 的新元素,原序号为i, i+1, … , n 的数据元素的序号变为i+1,i+2, … , n+1,插入后表长=原表长+1。
6. 删除操作:Delete_List(L,i)

初始条件:线性表L存在,1<=i<=n。

操作结果:在线性表L中删除序号为i的数据元素,删除后使序号为i+1, i+2,…, n 的元素变为序号为i, i+1,…,n-1,新表长=原表长-1

二、线性表的顺序存储及运算实现

1、线性表的顺序存储实现

  • 顺序表:在内存中用地址连续的一块存储空间顺序存放线性表各元素。用元素在机内的物理位置相邻表示逻辑相邻关系
  • 一维数组在内存中占用的存储空间就是一组连续的存储区域

思考1:如何读取任意数据元素?
已知基地址为LOC(a1),每个元素占用k个存储单元,第i个数据元素的存储地址为?
公式:LOC(ai)=LOC(a1)+(i-1)*k
小结:顺序表是随机的存取结构,计算任意元素存储地址的时间相等,即查找操作的时间性能:O(1)


思考2 线性表的长度= 数组的长度?
•n变化,MaxSize不变
•n ≤ MaxSize


思考3 描述顺序表需要几个属性?
•存储空间的起始位置:data
•存储容量:MaxSize
•当前长度:last(=n-1)

猜你喜欢

转载自blog.csdn.net/qq_42443562/article/details/82623946