数据结构22 线性表的顺序存储结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A的当前长度为 n, n m; 删除下标为 k 的结点 */
D1.[k合法?] IF (k 0 OR k n1 OR n0) THEN (PRINT“k不合法”. 终止本算法.).
D2.[删除] FOR ik1 TO n1 DO A[i1]A[i]. n n1. ▌
13
时间复杂性分析:
删除操作中与时间关系紧密的基本运算是什么? 元素移动
第二章 线性表、堆栈和队列
2.2 线性表的存储结构 2.2.1 顺序存储结构 2.2.2 链接存储结构--单链表 2.2.3 循环链表 2.2.4 双向循环链表
1
2.2 线性表的存储结构
顺序存储方式
按照线性表结点间的逻辑顺序依次将它们存储于 一组地址连续的存储单元中的这样一种存储方式 被称为线性表的顺序存储方式。
按顺序存储方式存储的线性表具有顺序存储结构。
特点:其逻辑顺序与物理顺序相同。
线性表 存储结构
顺序存储 链接存储
2
2.2.1 顺序存储结构
1. 实现顺序存储的方法
一维数组是实现线性表顺序存储的有效方法. 如 线性表(a0, a1, …, an1),可用一维数组a[n]来存放。
2. 顺序存储结构的优缺点:
线性表顺序存储结构的缺点 线性表容量不易改变,插入和删除结点较繁琐, 需移动元素调整一批结点的地址。
问题:由于线性表中元素的数目可能改变,因此 定义数组时要做如何的考虑呢? 定义大小合适的数组。
15
假定线性表的当前长度为 n,则Dn(输入数据集) 中有多少种可能的输入呢? n 种(n个位置可以发生插入)
设每种输入发生的概率相等(即1/n),则期望复 杂性? E(n)((n1)(n2) …10)(1/n)(n1)/2
10
2、删除 [例] 在有序顺序表(12, 13, 21, 24, 28, 30, 42, 77)
若顺序表中元素按其值整序,则称其为有序顺序表.
6
顺序存储的线性表的基本运算
1. 插入 [例] 在有序顺序表(12, 13, 21, 24, 28, 30, 42, 77) 中,插入元素 25 .
要求: 插入完成后,仍然是一个有序顺序表
问题: 此时, 线性表的逻辑结构发生什么变化? 位置关系发生变化 长度增加 1
308
A[2]
A[3]
图2.1 线性表的顺序存储
4
b bc
bkc
b(n1Βιβλιοθήκη Baiduc
空闲区
a0 0 a1 1
…
[例]:数组a[n]存放线 性表(a0, a1, … , an1). 每个结点占用 c 个地 址连续的字节.
ak k
…
an1 n1
Loc (a[k]) Loc (a[0]) kc
5
4. 顺序表之定义
7
序号 元素
序号 元素
0 12
0 12
1 13
1 13
2 21
2 21
插入25 3 24
3 24
4 28
4 25
5 30
5 28
6 42 7 77
6 30 7 42
8 77
8
//采用ADL算法描述语言描述算法
算法 Insert(A , k , X) /* 设顺序表 A 的最大长度为 m,A
当前长度为 n(A[0], A[1], , A[n1]),且始终有 n m; 在下标为 k 的结点后插入值为 X 的结点 */
中,删除元素 24 . 问题:线性表的逻辑结构发生什么变化? 位置关系发生变化,线性表长度减少1
11
序号 元素
0 12 1 13 删除24 2 21 3 24 4 28 5 30 6 42 7 77
序号 元素
0 12 1 13 2 21 3 28 4 30 5 42 6 77
12
算法 Delete(A, k) /* 设顺序表 A 的最大长度为m,
Dn中有多少种可能的输入呢? n 种(n 个位置可以发生删除)
假定每种删除发生的概率相等(即1/n),则期望复 杂性是多少? E(n)((n1) (n1) … 1 0)/n(n1)/2
14
小结
线性表顺序存储结构的优点 空间利用率高,简单、易于实现,可随机访问表 中任一元素,存取速度快。
优点: 其逻辑顺序与物理顺序相同; 存储空间的利用率高,存取速度快 ; 缺点: 不利于插入和删除
3
3. 线性表顺序存储的例子
图2.1给出了包含4个结点的线性表A[4]在内存储 器中的存储表示,其中每个结点占用2个地址连 续的字节,第一个结点A[0]的首地址为302 .
302
304
A[0]
306
A[1] 线性表
I1.[ 插入合法?] IF ( k 0 OR k m2 OR n m) THEN (PRINT“插入不合法”. 终止本算法.).
I2.[插入] FOR in1 TO k1 STEP 1 DO A[i1]A[i]. A[k1] X. n n1. ▌
9
时间复杂性分析:
插入操作中与时间紧密相关的基本运算是什么? 元素移动
① 顺序表又称为向量,在程序中它采用定长的一维数 组存储结构。顺序表有三个特征: ⑴ 表中元素类型相同; ⑵ 元素顺序存储于一块地址连续的存储空间中, 元素按其顺序有唯一下标,用其可方便的访问元素 字段值; ⑶ 程序中,一般用常数作为向量长度。
② 按顺序存储方式存储的线性表具有顺序存储结构, 一般称之为顺序表。换言之,在程序中采用定长的 一维数组,按顺序存储方式存储的线性表,被称为 顺序表.
D1.[k合法?] IF (k 0 OR k n1 OR n0) THEN (PRINT“k不合法”. 终止本算法.).
D2.[删除] FOR ik1 TO n1 DO A[i1]A[i]. n n1. ▌
13
时间复杂性分析:
删除操作中与时间关系紧密的基本运算是什么? 元素移动
第二章 线性表、堆栈和队列
2.2 线性表的存储结构 2.2.1 顺序存储结构 2.2.2 链接存储结构--单链表 2.2.3 循环链表 2.2.4 双向循环链表
1
2.2 线性表的存储结构
顺序存储方式
按照线性表结点间的逻辑顺序依次将它们存储于 一组地址连续的存储单元中的这样一种存储方式 被称为线性表的顺序存储方式。
按顺序存储方式存储的线性表具有顺序存储结构。
特点:其逻辑顺序与物理顺序相同。
线性表 存储结构
顺序存储 链接存储
2
2.2.1 顺序存储结构
1. 实现顺序存储的方法
一维数组是实现线性表顺序存储的有效方法. 如 线性表(a0, a1, …, an1),可用一维数组a[n]来存放。
2. 顺序存储结构的优缺点:
线性表顺序存储结构的缺点 线性表容量不易改变,插入和删除结点较繁琐, 需移动元素调整一批结点的地址。
问题:由于线性表中元素的数目可能改变,因此 定义数组时要做如何的考虑呢? 定义大小合适的数组。
15
假定线性表的当前长度为 n,则Dn(输入数据集) 中有多少种可能的输入呢? n 种(n个位置可以发生插入)
设每种输入发生的概率相等(即1/n),则期望复 杂性? E(n)((n1)(n2) …10)(1/n)(n1)/2
10
2、删除 [例] 在有序顺序表(12, 13, 21, 24, 28, 30, 42, 77)
若顺序表中元素按其值整序,则称其为有序顺序表.
6
顺序存储的线性表的基本运算
1. 插入 [例] 在有序顺序表(12, 13, 21, 24, 28, 30, 42, 77) 中,插入元素 25 .
要求: 插入完成后,仍然是一个有序顺序表
问题: 此时, 线性表的逻辑结构发生什么变化? 位置关系发生变化 长度增加 1
308
A[2]
A[3]
图2.1 线性表的顺序存储
4
b bc
bkc
b(n1Βιβλιοθήκη Baiduc
空闲区
a0 0 a1 1
…
[例]:数组a[n]存放线 性表(a0, a1, … , an1). 每个结点占用 c 个地 址连续的字节.
ak k
…
an1 n1
Loc (a[k]) Loc (a[0]) kc
5
4. 顺序表之定义
7
序号 元素
序号 元素
0 12
0 12
1 13
1 13
2 21
2 21
插入25 3 24
3 24
4 28
4 25
5 30
5 28
6 42 7 77
6 30 7 42
8 77
8
//采用ADL算法描述语言描述算法
算法 Insert(A , k , X) /* 设顺序表 A 的最大长度为 m,A
当前长度为 n(A[0], A[1], , A[n1]),且始终有 n m; 在下标为 k 的结点后插入值为 X 的结点 */
中,删除元素 24 . 问题:线性表的逻辑结构发生什么变化? 位置关系发生变化,线性表长度减少1
11
序号 元素
0 12 1 13 删除24 2 21 3 24 4 28 5 30 6 42 7 77
序号 元素
0 12 1 13 2 21 3 28 4 30 5 42 6 77
12
算法 Delete(A, k) /* 设顺序表 A 的最大长度为m,
Dn中有多少种可能的输入呢? n 种(n 个位置可以发生删除)
假定每种删除发生的概率相等(即1/n),则期望复 杂性是多少? E(n)((n1) (n1) … 1 0)/n(n1)/2
14
小结
线性表顺序存储结构的优点 空间利用率高,简单、易于实现,可随机访问表 中任一元素,存取速度快。
优点: 其逻辑顺序与物理顺序相同; 存储空间的利用率高,存取速度快 ; 缺点: 不利于插入和删除
3
3. 线性表顺序存储的例子
图2.1给出了包含4个结点的线性表A[4]在内存储 器中的存储表示,其中每个结点占用2个地址连 续的字节,第一个结点A[0]的首地址为302 .
302
304
A[0]
306
A[1] 线性表
I1.[ 插入合法?] IF ( k 0 OR k m2 OR n m) THEN (PRINT“插入不合法”. 终止本算法.).
I2.[插入] FOR in1 TO k1 STEP 1 DO A[i1]A[i]. A[k1] X. n n1. ▌
9
时间复杂性分析:
插入操作中与时间紧密相关的基本运算是什么? 元素移动
① 顺序表又称为向量,在程序中它采用定长的一维数 组存储结构。顺序表有三个特征: ⑴ 表中元素类型相同; ⑵ 元素顺序存储于一块地址连续的存储空间中, 元素按其顺序有唯一下标,用其可方便的访问元素 字段值; ⑶ 程序中,一般用常数作为向量长度。
② 按顺序存储方式存储的线性表具有顺序存储结构, 一般称之为顺序表。换言之,在程序中采用定长的 一维数组,按顺序存储方式存储的线性表,被称为 顺序表.