数据结构及其应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
last+1 代表顺序表的表长; 将 last 赋值为 –1 可实现置空表操作。
由上可知:合理地设置数据成员可大大简化算法的设计 及提高算法的效率。顺序表不仅仅包含存放其数据元 素的数组,它还应包括一些有用的数据成员,以及相 应的操作,它们是一个整体:
2020/7/7
10
顺序表之整体概念:
数组 data
第一章 概述
研究对象:信息的表示方法、数据的组织方法、操作算法设计
意义地位:数据结构+算法=程序
程序设计的基础
系统软件的核心
发展过程:数值计算
非数值计算
建立数学模型 客体及其关系的表示
设计数值计算方法
数据的组织 操作算法的设计
非数值计算应用的发展,促进了数据结构
的研究和发展以及其体系的完善。
2020/7/7
符号表示法:L=(e1,e2,…en)
图形表示法:
e1
e2
en
2020/7/7
6
e 其中: i ---表示线性表 L 的第 i 个数据元素
n ---表示线性表 L 的表长(n>=0) n=0 时的线性表称为空表
e e e e i-1 称为 i 的前驱, i+1 称为 i 的后继
线性表的基本操作:
(1)初始化(置空表)——可由构造函数实现 (2)求表长( Length ) (3)查找或定位( Find )
的“一个跟着一个”这一序列关系的存贮方式, 称为线性表的顺序存贮结构,其上的线性表称 为顺序表。
顺序表的类定义:利用数组作为顺序表的存储结构,
它被封装在类的私有域中
2020/7/7
8
template <class Type> class SeqList { Public: SeqList(int MaxSize=defaultSize); ~SeqList( ) {delete [ ] data;} int Length( ) const {return last+1;} int Find(Type & x) const; int Insert(Type & x,int i); int Remove(Type & x); int IsEmpty( ) {return last = = - 1;} int Isfull( ) {return last = =MaxSize – 1 ;} Type & Get( int i ) {return i <0 || i >last ? NULL : data[i];} Private: Type * data; // 用数组存放线性表——顺序存贮结构 int Maxsize; // 数组大小,但顺序表的长度为 last+1 int last; }// last 为表中最后元素的下标,last=-1 时表示空表
数据元素
数据元素
关系
Ei
E i+1
物理结构:数据结构在计算机中的具体表示和实现,
又称存储结构
2020/7/7
3
数据结构的分类
按逻辑结构分类:
纯集合型结构:数据元素之间除了“同属于一个集合”这
一 关系外,别无其他关系
线性结构:数据元素之间存在“一个跟着一个”的序列关
系
树型结构:数据元素之间存在“每个元素只能跟着一个元
素 但可以有多个元素跟着它”的层次关系
图状结构:任意两个数据元素之间都可能存在关系
按存储结构分类:
顺序存储结构
2020/7/7
链式存储结构
4
索引存贮结构
基本操作:任一数据结构均有一组相应的基本操作,
有时操作不同,用途迥异(如栈ຫໍສະໝຸດ Baidu队列)
常用的基本操作有插入、 删除、查找、
更新、排序等
算
法:算法是为了解决给定的问题而规定的一个
(4)插入( Insert ) (5)删除( Remove ) (6)排序( Sort )
(7)判空( IsEmpty)
2020/7/7
7
2.2 线性表的顺序存储结构
要实现在计算机内表示一个数据结构,要解决两 种信息的存贮问题:
数据元素本身的存贮 数据元素之间关系的存贮
定义:利用内存物理结构上的邻接特点,实现线性表
//构造函数,通过指定参数 sz 定义数组的长度,并将 last 置为 –1
//即置空表
{
if(sz>0)
{
Maxsize=sz;
last=-1;
// last+1=0 , 表明表中无元素,空表
data=new Type[Maxsize];
关 键 码:能起唯一标识(数据元素)作用的数据项 数据结构:一组同类的数据元素、其间的关系及其上的
一组操作所构成的整体,称为一个数据结构
2020/7/7
2
数据结构的描述方式
逻辑结构:是对数据元素之间逻辑关系(抛开具体
的关系含义以及存储方式等)的描述,它可以用一个 数据元素的集合和定义在此集合上的几个关系来表示。 通常可用图形表示,圆圈表示数据元素,箭头表示关 系:
1
基本术语
数 据:描述客观事物的且能由计算机处理的数
值、字符等符号
数据元素:数据的基本单位,在计算机程序中通常
作为一个整体进行考虑和处理(记录、 结点、表目、元素)
数 据 项:数据元素的某一属性。数据元素可以由
若干数据项组成,数据项可以由若干 更小的款项(组合项、原子项)组成。 数据项又称域、字段
2020/7/7
9
上述顺序表定义中的数据成员 Maxsize 是为判断顺序 表是否为满而设,last 是为便于判断顺序表是否为空、求 表长、置空表而设:
last=Maxsize –1表示顺序表已满,此时再进行插 入操作会导致上溢错误;
last=-1 表示顺序表为空表,此时再进行删除操作 会导致下溢错误;
有限长的操作步骤序列,则重于解决问题 的方法和步骤。当算法由计算机语言表示 时称为程序(代码)
算法设计目标:可维护性
可靠性(正确性、健壮行) 可读性 高效率(时间、空间)
2020/7/7
5
第二章 线性表
2。1 线性表的逻辑结构 定义:由相同种类的数据元素组成的一个有穷
序列称为一个线性表。“一个跟着一个”
变量
0 Maxsize
1
last
...
操作算法 初始化操作 插入操作 删除操作
last 数组下标
查找操作
排序操作
......
...
...
Maxsize-1
2020/7/7
11
顺序表的基本操作(算法)
(1)顺序表初始化操作算法
template <class Type> Seqlist<Type>::Seqlist(int sz)
由上可知:合理地设置数据成员可大大简化算法的设计 及提高算法的效率。顺序表不仅仅包含存放其数据元 素的数组,它还应包括一些有用的数据成员,以及相 应的操作,它们是一个整体:
2020/7/7
10
顺序表之整体概念:
数组 data
第一章 概述
研究对象:信息的表示方法、数据的组织方法、操作算法设计
意义地位:数据结构+算法=程序
程序设计的基础
系统软件的核心
发展过程:数值计算
非数值计算
建立数学模型 客体及其关系的表示
设计数值计算方法
数据的组织 操作算法的设计
非数值计算应用的发展,促进了数据结构
的研究和发展以及其体系的完善。
2020/7/7
符号表示法:L=(e1,e2,…en)
图形表示法:
e1
e2
en
2020/7/7
6
e 其中: i ---表示线性表 L 的第 i 个数据元素
n ---表示线性表 L 的表长(n>=0) n=0 时的线性表称为空表
e e e e i-1 称为 i 的前驱, i+1 称为 i 的后继
线性表的基本操作:
(1)初始化(置空表)——可由构造函数实现 (2)求表长( Length ) (3)查找或定位( Find )
的“一个跟着一个”这一序列关系的存贮方式, 称为线性表的顺序存贮结构,其上的线性表称 为顺序表。
顺序表的类定义:利用数组作为顺序表的存储结构,
它被封装在类的私有域中
2020/7/7
8
template <class Type> class SeqList { Public: SeqList(int MaxSize=defaultSize); ~SeqList( ) {delete [ ] data;} int Length( ) const {return last+1;} int Find(Type & x) const; int Insert(Type & x,int i); int Remove(Type & x); int IsEmpty( ) {return last = = - 1;} int Isfull( ) {return last = =MaxSize – 1 ;} Type & Get( int i ) {return i <0 || i >last ? NULL : data[i];} Private: Type * data; // 用数组存放线性表——顺序存贮结构 int Maxsize; // 数组大小,但顺序表的长度为 last+1 int last; }// last 为表中最后元素的下标,last=-1 时表示空表
数据元素
数据元素
关系
Ei
E i+1
物理结构:数据结构在计算机中的具体表示和实现,
又称存储结构
2020/7/7
3
数据结构的分类
按逻辑结构分类:
纯集合型结构:数据元素之间除了“同属于一个集合”这
一 关系外,别无其他关系
线性结构:数据元素之间存在“一个跟着一个”的序列关
系
树型结构:数据元素之间存在“每个元素只能跟着一个元
素 但可以有多个元素跟着它”的层次关系
图状结构:任意两个数据元素之间都可能存在关系
按存储结构分类:
顺序存储结构
2020/7/7
链式存储结构
4
索引存贮结构
基本操作:任一数据结构均有一组相应的基本操作,
有时操作不同,用途迥异(如栈ຫໍສະໝຸດ Baidu队列)
常用的基本操作有插入、 删除、查找、
更新、排序等
算
法:算法是为了解决给定的问题而规定的一个
(4)插入( Insert ) (5)删除( Remove ) (6)排序( Sort )
(7)判空( IsEmpty)
2020/7/7
7
2.2 线性表的顺序存储结构
要实现在计算机内表示一个数据结构,要解决两 种信息的存贮问题:
数据元素本身的存贮 数据元素之间关系的存贮
定义:利用内存物理结构上的邻接特点,实现线性表
//构造函数,通过指定参数 sz 定义数组的长度,并将 last 置为 –1
//即置空表
{
if(sz>0)
{
Maxsize=sz;
last=-1;
// last+1=0 , 表明表中无元素,空表
data=new Type[Maxsize];
关 键 码:能起唯一标识(数据元素)作用的数据项 数据结构:一组同类的数据元素、其间的关系及其上的
一组操作所构成的整体,称为一个数据结构
2020/7/7
2
数据结构的描述方式
逻辑结构:是对数据元素之间逻辑关系(抛开具体
的关系含义以及存储方式等)的描述,它可以用一个 数据元素的集合和定义在此集合上的几个关系来表示。 通常可用图形表示,圆圈表示数据元素,箭头表示关 系:
1
基本术语
数 据:描述客观事物的且能由计算机处理的数
值、字符等符号
数据元素:数据的基本单位,在计算机程序中通常
作为一个整体进行考虑和处理(记录、 结点、表目、元素)
数 据 项:数据元素的某一属性。数据元素可以由
若干数据项组成,数据项可以由若干 更小的款项(组合项、原子项)组成。 数据项又称域、字段
2020/7/7
9
上述顺序表定义中的数据成员 Maxsize 是为判断顺序 表是否为满而设,last 是为便于判断顺序表是否为空、求 表长、置空表而设:
last=Maxsize –1表示顺序表已满,此时再进行插 入操作会导致上溢错误;
last=-1 表示顺序表为空表,此时再进行删除操作 会导致下溢错误;
有限长的操作步骤序列,则重于解决问题 的方法和步骤。当算法由计算机语言表示 时称为程序(代码)
算法设计目标:可维护性
可靠性(正确性、健壮行) 可读性 高效率(时间、空间)
2020/7/7
5
第二章 线性表
2。1 线性表的逻辑结构 定义:由相同种类的数据元素组成的一个有穷
序列称为一个线性表。“一个跟着一个”
变量
0 Maxsize
1
last
...
操作算法 初始化操作 插入操作 删除操作
last 数组下标
查找操作
排序操作
......
...
...
Maxsize-1
2020/7/7
11
顺序表的基本操作(算法)
(1)顺序表初始化操作算法
template <class Type> Seqlist<Type>::Seqlist(int sz)