数据结构及其应用 (用面向对象方法与C十十描述 2021222
2021/2/22 1 数据结构及其应用 (用面向对象方法与C++描述)
第一章概述 研究对象:信息的表示方法、数据的组织方法、操作算法设计 意义地位:数据结构+算法=程序 程序设计的基础 系统软件的核心 发展过程:数值计算 非数值计算 建立数学模型客体及其关系的表示 设计数值计算方法数据的组织 操作算法的设计 非数值计算应用的发展,促进了数据结构 的研究和发展以及其体系的完善。 2021222
2021/2/22 2 第一章 概述 研究对象:信息的表示方法、数据的组织方法、操作算法设计 意义地位:数据结构+算法=程序 程序设计的基础 系统软件的核心 发展过程:数值计算 非数值计算 建立数学模型 客体及其关系的表示 设计数值计算方法 数据的组织 操作算法的设计 非数值计算应用的发展,促进了数据结构 的研究和发展以及其体系的完善
基本术语 ■数据:描述宮观事物的且能由计算机处理的数 值、字符等符号 ■数据元素:数据的基本单位,在计算杋程序中通常 作为一个整体进行考虑和处理(记录 结点、表目、元素) ■数据项:数据元素的某-属性。数据元素可以由 若干数据项组成,数据项可以由若干 更小的款项(组合项、原子项)组成。 数据项又称域、字段 关键码:能起唯一标识(数据元素)作用的数据项 口数据结构:组同类的数据元素、其间的关系及其上的 组操作所构成的整体,称为一个数据结构 2021222
2021/2/22 3 基本术语 ◼ 数 据:描述客观事物的且能由计算机处理的数 值、字符等符号 ◼ 数据元素:数据的基本单位,在计算机程序中通常 作为一个整体进行考虑和处理(记录、 结点、表目、元素) ◼ 数 据 项:数据元素的某一属性。数据元素可以由 若干数据项组成,数据项可以由若干 更小的款项(组合项、原子项)组成。 数据项又称域、字段 ◼ 关 键 码:能起唯一标识(数据元素)作用的数据项 ◼ 数据结构:一组同类的数据元素、其间的关系及其上的 一组操作所构成的整体,称为一个数据结构
数据结构的描述方式 ■逻辑结构:是对数据元素之闫逻辑关系(抛开具体 的关系含义以及存储方式等)的描述,它可以用 数据元素的集合和定义在此集合上的几个关系来表示 通常可用图形表示,圆圈表示数据元素,箭头表示关 系 数据元素 数据元素 E 关系 E ■物理结构:数据结构在计算机中的具体表示和实现, 又称存储结构 2021222
2021/2/22 4 数据结构的描述方式 ◼ 逻辑结构:是对数据元素之间逻辑关系(抛开具体 的关系含义以及存储方式等)的描述,它可以用一个 数据元素的集合和定义在此集合上的几个关系来表示。 通常可用图形表示,圆圈表示数据元素,箭头表示关 系: ◼ 物理结构:数据结构在计算机中的具体表示和实现, 又称存储结构 E i E i+1 数据元素 数据元素 关系
数据结构的分类 ■按逻辑结构分类: 纯集合型结构:数据元素之间除了“同属于一个集合”这 关系外,别无其他关系 线性结构:数据元素之间存在“—个跟着一个”的序列关 系 树型结构:数据元素之间存在“每个元素只能跟着一个元 素 但可以有多个元素跟着它”的层次关系 图状结构:任意两个数据元素之间都可能存在关系 按存储结构分类 顺序存储结构 链式存储结构 2021222 索引存贮结构
2021/2/22 5 数据结构的分类 ◼ 按逻辑结构分类: 纯集合型结构:数据元素之间除了“同属于一个集合”这 一 关系外,别无其他关系 线性结构:数据元素之间存在“一个跟着一个”的序列关 系 树型结构:数据元素之间存在“每个元素只能跟着一个元 素 但可以有多个元素跟着它”的层次关系 图状结构:任意两个数据元素之间都可能存在关系 ◼ 按存储结构分类: 顺序存储结构 链式存储结构 索引存贮结构
基本操作:任一数据结构均有一组相应的基本操作, 有时操作不同,用途迥异(如栈和队列) 常用的基本操作有插入、删除、查找、 更新、排序等 算法:算法是为了解决给定的问题而规定的一个 有限长的操作步骤序列,则重于解决问题 的方法和步骤。当算法由计算机语言表示 时称为程序(代码) 算法设计目标:可维护性 可靠性(正确性、健壮行) 可读性 高效率(时间、空间) 2021222
2021/2/22 6 基本操作:任一数据结构均有一组相应的基本操作, 有时操作不同,用途迥异(如栈和队列) 常用的基本操作有插入、 删除、查找、 更新、排序等 算 法:算法是为了解决给定的问题而规定的一个 有限长的操作步骤序列,则重于解决问题 的方法和步骤。当算法由计算机语言表示 时称为程序(代码) 算法设计目标:可维护性 可靠性(正确性、健壮行) 可读性 高效率(时间、空间)
第二章线性表 2。1线性表的逻辑结构 定义:由相同种类的数据元素组成的一个有穷 序列称为一个线性表。“一个跟着一个” 符号表示法:L=(e,e2,en) 图形表示法: e e2 n 2021222
2021/2/22 7 第二章 线性表 2。1 线性表的逻辑结构 定义:由相同种类的数据元素组成的一个有穷 序列称为一个线性表。“一个跟着一个” 符号表示法:L=(e1,e2,…en) 图形表示法: e1 e2 en
其中:ei—表示线性表L的第i个数据元素 表示线性表L的表长(n>=0) n=0时的线性表称为空表 ei1称为ei的前驱,ei+称为ei的后继 线性表的基本操作 (1)初始化(置空表)—可由构造函数实现 (2)求表长( Length (3)查找或定位(Find) (4)插入( Insert) (5)删除( Remove) (6)排序(Sort) (7)判空( IsEmpty) 2021222
2021/2/22 8 其中: ei ---表示线性表 L 的第 i 个数据元素 n ---表示线性表 L 的表长(n>=0) n=0 时的线性表称为空表 ei-1 称为 ei 的前驱,ei+1 称为 ei 的后继 线性表的基本操作: (1)初始化(置空表)——可由构造函数实现 (2)求表长( Length ) (3)查找或定位( Find ) (4)插入( Insert ) (5)删除( Remove ) (6)排序( Sort ) (7)判空( IsEmpty)
2.2线性表的顺序存储结构 要实现在计算机内表示一个数据结构,要解决两 种信息的存贮问题 数据元素本身的存贮 数据元素之间关系的存贮 定义:利用内存物理结构上的邻接特点,实现线性表 的“一个跟着—个”这一序列关系的存贮方式, 称为线性表的顺序存贮结构,其上的线性表称 为顺序表。 顶序表的类定义:利用数组作为顺序表的存储结构, 它被封装在类的私有域中 2021222
2021/2/22 9 2.2 线性表的顺序存储结构 要实现在计算机内表示一个数据结构,要解决两 种信息的存贮问题: 数据元素本身的存贮 数据元素之间关系的存贮 定义:利用内存物理结构上的邻接特点,实现线性表 的“一个跟着一个”这一序列关系的存贮方式, 称为线性表的顺序存贮结构,其上的线性表称 为顺序表。 顺序表的类定义:利用数组作为顺序表的存储结构, 它被封装在类的私有域中
template class seqlist i Publica Seqlist(int Maxsize=defaultsize) Seqlistoidelete[] data; I int Length( const return last+1; i int Find(type x)const int Insert(Type x, int i) int Remove(Type x int IsEmpty return last int Isfull( return last==MaxSize-1: Type Get( int i)return i last? NULL: data[1]; Private Tpe*data;∥/用数组存放线性表顺序存贮结构 int maxsize;∥数组大小,但顺序表的长度为last+1 int last;}∥/last为表中最后元素的下标,last=1时表示空表 2021222
2021/2/22 10 template 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 last ? NULL : data[i];} Private: Type * data; // 用数组存放线性表——顺序存贮结构 int Maxsize; // 数组大小,但顺序表的长度为last+1 int last; }// last 为表中最后元素的下标,last=-1 时表示空表