线性表 PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构
第二章 线性表
10:29
• 第 2章 • 第 3章 • 第 4章 义表
线性表 栈和队列 串、数组和广
线性结构
(逻辑、存储 和运算)
线性结构的定义: 若结构是非空有限集,则有且仅有一个开始结 点和一个终端结点,并且所有结点都最多只有一个 直接前趋和一个直接后继。 可表示为:(a1 ,
a2
, ……,
10:29
例3 某校从1978年到1983年各种型号的计算机拥 有量的变化情况。 (6,17,28,50,92,188) 数据元素都是数字; 元素间关系是线性 例4一副扑克的点数 (2,3,4,…,J,Q,K,A) 数据元素都是字符; 元素间关系是线性
同一线性表中的元素必定具有相同特性
10:29
线性表特点:在数据元素的非空有限集中 – 存在唯一的一个被称作“第一个”的数据元素 – 存在唯一的一个被称作“最后一个”的数据元素 – 除第一个外,集合中的每个数据元素均只有一个 直接前驱 – 除最后一个外,集合中的每个数据元素均只有一 个直接后继
10:29
7. 检索值为e的数据元素 LocateELem(L,e) 判断线性表L中是否存在值为e的结点 8. 在线性表L中插入一个数据元素 ListInsert(&L,i,e) 向线性表L的第i个位置之前插入一个值为e的数据元素 9. 删除线性表L中第i个数据元素 ListDelete(&L,i,&e) 删除线性表L的第i个数据元素,并将该数据元素的值返回e中 10.返回前驱结点 PriorElem(L,cur_e,&pri_e) 返回L中当前数据元素cur_e的前驱结点 11.返回后继结点NextElem(L,cur_e,&next_e) 返回L中当前数据元素cur_e的的后继结点
存储内容 元素1 元素2 …….. 假设每个 元素所占 存储单元 个数为m
Lo
Lo+m
顺序存储
Lo+(i-1)*m
元素i
……..
Lo+(n-1)*m
元素n
Loc(元素i)=Loc(元素1)+(i-1)*m
10:29
– 顺序表:
• 定义:用一组地址连续的存储单元存放一个线性表 • 元素地址计算方法:
数据元素
线性起点
ai的直接前趋 ai的直接后继
n=0时称为 空表
10:29
线性终点
下标,是元素的 序号,表示元素 在表中的位置
n为元素总个
数,即表长
例1 分析26 个英文字母组成的英文表 ( A, B, C, D, …… , Z) 数据元素都是字母; 元素间关系是线性 例2 分析学生情况登记表
学号
041810205
姓名
于春梅
性别
女
年龄
18
班级
04级计算机1班
041810260
041810284 041810360 :
何仕鹏
:
04级计算机2班
04级计算机3班 04级计算机4班 :
1:1
数据元素都是记录;
元素间关系是线性
同一线性表中的元素必定具有相同特性
顺序表的类型定义
#define MAXSIZE 100 //预定义最大长度 typedef struct { ElemType Elem[MAXSIZE]; //指向数据元素的基地址 int length; //线性表的当前长度 }SqList;
线性表基本运算操作有:
查找、插入、删除
由于线性表的长度是可变的,所需的存储空间不同, 所以在C语言中,可用动态分配的一维数组来描述。
10:29
2.2
线性表的顺序表示和实现
线性表的顺序表示又称为顺序存储结构或顺序映像。 顺序存储定义:把逻辑上相邻的数据元素存储在物理 上相邻的存储单元中的存储结构。
简言之,逻辑上相邻,物理上也相邻
顺序存储方法:用一组地址连续的存储单元依次存储 线性表的元素,可通过数组V[n]来实现。
10:29
存储地址 起始地址Lo
相邻结点间的关系
抽象数据类型的定义为
线性表的基本操作
1. 初始化线性表L InitList(L) 构造一个空的线性表L,即表的初始化。 2. 销毁线性表L DestoryList(L) 其作用是销毁当前线性表L 3. 清空线性表L ClearList(L) 清空L使之成为空表 4. 求线性表L的长度 ListLength(L) 返回L的长度,即线性表中数据元素的个数 5. 判断线性表L是否为空 IsEmpty(L) 判断L是否为空表,是返回true,否返回false 6. 获取线性表L中的某个数据元素内容 GetElem(L,i,&e) 将L中第i个数据元素的值返回到变量e中
10:29
存储地址 b b+l
内存 a a
1 2
元素序号
1 2
b+(n-1)l
a
n
n
备 用 空 间
b+(maxlen-1)l
– LOC(ai)=LOC(a1)+(i-1)*m
第i个元素的地址 起始地址,基地址
// 任意两个相邻元素间地址相差m – LOC(ai+1)=LOC(ai)+m • 特点: – 实现逻辑上相邻—物理地址相邻 – 实现随机存取
每一个数据元素的存储位置都和线性表的起 始位置相差一个和数据元素在线性表中的位序 成正比的常数,因此只要确定了起始位置,线 性表中任一数据元素都可随机存取。 顺序表可以随机存取,高级程序设计语言中 的数组也有随机存取的特性。 实现:可用C语言的一维数组实现
10:29
a n)
线性结构的特点:
① 只有一个首结点和尾结点; ② 除首尾结点外,其他结点只有一个直接前驱和一 个直接后继。
简言之,线性结构反映结点间的逻辑关系是 一对一 的
线性结构包括线性表、堆栈、队列、字符串、数 组等等,其中,最典型、最常用的是
线性表
10:29
第 2章
线性表
教学目标
1. 了解线性结构的特点 2.掌握顺序表的定义、查找、插入和删除 3.掌握链表的定义、查找、插入和删除 4.能够从时间和空间复杂度的角度比较两种 存储结构的不同特点及其适用场合
10:29
教学内容
2.1 线性表的类型定义 2.2 线性表的顺序表示和实现
2.3 线性表的链式表示和实现
2.4 线性表的应用
10:29
2.1
线性表的类型定义
线性表的定义: 由 n ( n>=0 )个类型相同的数
据元素组成的有限序列
L=(a1, a2, … ai-1,ai, ai+1 ,…, an)
第二章 线性表
10:29
• 第 2章 • 第 3章 • 第 4章 义表
线性表 栈和队列 串、数组和广
线性结构
(逻辑、存储 和运算)
线性结构的定义: 若结构是非空有限集,则有且仅有一个开始结 点和一个终端结点,并且所有结点都最多只有一个 直接前趋和一个直接后继。 可表示为:(a1 ,
a2
, ……,
10:29
例3 某校从1978年到1983年各种型号的计算机拥 有量的变化情况。 (6,17,28,50,92,188) 数据元素都是数字; 元素间关系是线性 例4一副扑克的点数 (2,3,4,…,J,Q,K,A) 数据元素都是字符; 元素间关系是线性
同一线性表中的元素必定具有相同特性
10:29
线性表特点:在数据元素的非空有限集中 – 存在唯一的一个被称作“第一个”的数据元素 – 存在唯一的一个被称作“最后一个”的数据元素 – 除第一个外,集合中的每个数据元素均只有一个 直接前驱 – 除最后一个外,集合中的每个数据元素均只有一 个直接后继
10:29
7. 检索值为e的数据元素 LocateELem(L,e) 判断线性表L中是否存在值为e的结点 8. 在线性表L中插入一个数据元素 ListInsert(&L,i,e) 向线性表L的第i个位置之前插入一个值为e的数据元素 9. 删除线性表L中第i个数据元素 ListDelete(&L,i,&e) 删除线性表L的第i个数据元素,并将该数据元素的值返回e中 10.返回前驱结点 PriorElem(L,cur_e,&pri_e) 返回L中当前数据元素cur_e的前驱结点 11.返回后继结点NextElem(L,cur_e,&next_e) 返回L中当前数据元素cur_e的的后继结点
存储内容 元素1 元素2 …….. 假设每个 元素所占 存储单元 个数为m
Lo
Lo+m
顺序存储
Lo+(i-1)*m
元素i
……..
Lo+(n-1)*m
元素n
Loc(元素i)=Loc(元素1)+(i-1)*m
10:29
– 顺序表:
• 定义:用一组地址连续的存储单元存放一个线性表 • 元素地址计算方法:
数据元素
线性起点
ai的直接前趋 ai的直接后继
n=0时称为 空表
10:29
线性终点
下标,是元素的 序号,表示元素 在表中的位置
n为元素总个
数,即表长
例1 分析26 个英文字母组成的英文表 ( A, B, C, D, …… , Z) 数据元素都是字母; 元素间关系是线性 例2 分析学生情况登记表
学号
041810205
姓名
于春梅
性别
女
年龄
18
班级
04级计算机1班
041810260
041810284 041810360 :
何仕鹏
:
04级计算机2班
04级计算机3班 04级计算机4班 :
1:1
数据元素都是记录;
元素间关系是线性
同一线性表中的元素必定具有相同特性
顺序表的类型定义
#define MAXSIZE 100 //预定义最大长度 typedef struct { ElemType Elem[MAXSIZE]; //指向数据元素的基地址 int length; //线性表的当前长度 }SqList;
线性表基本运算操作有:
查找、插入、删除
由于线性表的长度是可变的,所需的存储空间不同, 所以在C语言中,可用动态分配的一维数组来描述。
10:29
2.2
线性表的顺序表示和实现
线性表的顺序表示又称为顺序存储结构或顺序映像。 顺序存储定义:把逻辑上相邻的数据元素存储在物理 上相邻的存储单元中的存储结构。
简言之,逻辑上相邻,物理上也相邻
顺序存储方法:用一组地址连续的存储单元依次存储 线性表的元素,可通过数组V[n]来实现。
10:29
存储地址 起始地址Lo
相邻结点间的关系
抽象数据类型的定义为
线性表的基本操作
1. 初始化线性表L InitList(L) 构造一个空的线性表L,即表的初始化。 2. 销毁线性表L DestoryList(L) 其作用是销毁当前线性表L 3. 清空线性表L ClearList(L) 清空L使之成为空表 4. 求线性表L的长度 ListLength(L) 返回L的长度,即线性表中数据元素的个数 5. 判断线性表L是否为空 IsEmpty(L) 判断L是否为空表,是返回true,否返回false 6. 获取线性表L中的某个数据元素内容 GetElem(L,i,&e) 将L中第i个数据元素的值返回到变量e中
10:29
存储地址 b b+l
内存 a a
1 2
元素序号
1 2
b+(n-1)l
a
n
n
备 用 空 间
b+(maxlen-1)l
– LOC(ai)=LOC(a1)+(i-1)*m
第i个元素的地址 起始地址,基地址
// 任意两个相邻元素间地址相差m – LOC(ai+1)=LOC(ai)+m • 特点: – 实现逻辑上相邻—物理地址相邻 – 实现随机存取
每一个数据元素的存储位置都和线性表的起 始位置相差一个和数据元素在线性表中的位序 成正比的常数,因此只要确定了起始位置,线 性表中任一数据元素都可随机存取。 顺序表可以随机存取,高级程序设计语言中 的数组也有随机存取的特性。 实现:可用C语言的一维数组实现
10:29
a n)
线性结构的特点:
① 只有一个首结点和尾结点; ② 除首尾结点外,其他结点只有一个直接前驱和一 个直接后继。
简言之,线性结构反映结点间的逻辑关系是 一对一 的
线性结构包括线性表、堆栈、队列、字符串、数 组等等,其中,最典型、最常用的是
线性表
10:29
第 2章
线性表
教学目标
1. 了解线性结构的特点 2.掌握顺序表的定义、查找、插入和删除 3.掌握链表的定义、查找、插入和删除 4.能够从时间和空间复杂度的角度比较两种 存储结构的不同特点及其适用场合
10:29
教学内容
2.1 线性表的类型定义 2.2 线性表的顺序表示和实现
2.3 线性表的链式表示和实现
2.4 线性表的应用
10:29
2.1
线性表的类型定义
线性表的定义: 由 n ( n>=0 )个类型相同的数
据元素组成的有限序列
L=(a1, a2, … ai-1,ai, ai+1 ,…, an)