数据结构实用教程(c语言版).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构实用教程(c语言版).ppt》由会员分享,可在线阅读,更多相关《数据结构实用教程(c语言版).ppt(608页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构实用教程(C语言版)第第1章章概论概论本章主要介绍以下内容:本章主要介绍以下内容:本章主要介绍以下内容:本章主要介绍以下内容:数据结构中涉及的相关概念数据结构中涉及的相关概念数据结构中涉及的相关概念数据结构中涉及的相关概念数据结构研究的主要内容数据结构研究的主要内容数据结构研究的主要内容数据结构研究的主要内容算法的概念、描述方法以及评价标准算法的概念、描述方法以及评价标准算法的概念、描述方法以及评价标准算法的概念、描述方法以及评价标准本章目录本章目录1.11.1什么是数据结构什么是数据结构什么是数据结构什么是数据结构11.21.2算法和算法分析算法和算法分析算法和算法分析算法和算法分析
2、25.55.5哈夫曼树哈夫曼树哈夫曼树哈夫曼树51.31.3本章小结本章小结本章小结本章小结3结束结束1.1什么是数据结构什么是数据结构v1.1.1基本概念及术语基本概念及术语v1.1.2数据的逻辑结构数据的逻辑结构v1.1.3数据的存储结构数据的存储结构v1.1.4抽象数据类型抽象数据类型返回到本节目录返回到总目录返回到总目录返回到总目录返回到总目录基本概念及术语基本概念及术语在系统的学习数据结构知识之前,先了解一些相在系统的学习数据结构知识之前,先了解一些相关概念和术语。关概念和术语。1数据(数据(Data)指所有能输入到计算机中并被计算机程序处理的指所有能输入到计算机中并被计算机程序处理
3、的符号的总称。例如,整数、实数、字符、图像、符号的总称。例如,整数、实数、字符、图像、声音等都是数据。声音等都是数据。2数据元素(数据元素(DataElement)数据元素(也称为结点)是数据的基本单位,在数据元素(也称为结点)是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可以由若干个数据项组成。理。一个数据元素可以由若干个数据项组成。数据项是数据处理中不可分割的最小单位。数据项是数据处理中不可分割的最小单位。返回到本节目录3数据结构(数据结构(DataStructure)是相互之间存在一种或多种特定关系的数据元是相互之间存
4、在一种或多种特定关系的数据元素的集合。这些数据元素不是孤立存在的,素的集合。这些数据元素不是孤立存在的,而是有着某种关系,这种关系称为结构。而是有着某种关系,这种关系称为结构。数据结构一般包括以下三个方面内容:数据结构一般包括以下三个方面内容:(1)数据元素之间的逻辑关系,也称数据的)数据元素之间的逻辑关系,也称数据的逻辑结构。逻辑结构。(2)数据元素及其关系在计算机存储器内的)数据元素及其关系在计算机存储器内的表示,称为数据的存储结构。表示,称为数据的存储结构。(3)数据的运算,即对数据施加的操作。)数据的运算,即对数据施加的操作。返回到本节目录基本概念及术语基本概念及术语数据结构定义:按某
5、种逻辑关系组织起来的一批数据,数据结构定义:按某种逻辑关系组织起来的一批数据,按一定的映像方式把它存放在计算机存储器中,并按一定的映像方式把它存放在计算机存储器中,并在这些数据上定义了一个运算的集合,就叫做数据在这些数据上定义了一个运算的集合,就叫做数据结构。结构。简言之,数据结构简言之,数据结构=逻辑结构逻辑结构+存储结构存储结构+运算集合运算集合。4数据类型数据类型(DataType)数据类型是一组性质相同的值集合以及定义在这个值数据类型是一组性质相同的值集合以及定义在这个值集合上的一组操作的总称。集合上的一组操作的总称。如在高级语言中,整型类型的取值范围为:如在高级语言中,整型类型的取值
6、范围为:-32768+32767,运算符集合为加、减、乘、除、取模,运算符集合为加、减、乘、除、取模,即即+、-、*、/、%。返回到本节目录基本概念及术语基本概念及术语返回到本节目录基本概念及术语基本概念及术语1.1.2数据的逻辑结构数据的逻辑结构1定义定义数据的逻辑结构是指数据元素之间逻辑关系描数据的逻辑结构是指数据元素之间逻辑关系描述。可以用一个二元组表示,其形式化描述述。可以用一个二元组表示,其形式化描述为:为:Data_Structure=(D,R)其中其中D是数据元素的有限集合,是数据元素的有限集合,R是是D上关系的上关系的有限集合。数据的逻辑结构是从逻辑关系上有限集合。数据的逻辑结
7、构是从逻辑关系上描述数据,与数据的存储无关,是独立于计描述数据,与数据的存储无关,是独立于计算机的。算机的。返回到本节目录2数据的逻辑结构的分类数据的逻辑结构的分类根据数据元素之间的逻辑关系的不同特性,分根据数据元素之间的逻辑关系的不同特性,分为下列四类基本结构,如图为下列四类基本结构,如图1-1所示。所示。(a)集合结构)集合结构(b)线性结构)线性结构(c)树型结构)树型结构(d)图形结构)图形结构图图1-1数据结构的四种基本逻辑结构数据结构的四种基本逻辑结构返回到本节目录1.1.2数据的逻辑结构数据的逻辑结构(1)集合)集合结构中的数据元素之间除了结构中的数据元素之间除了“同属于一个集合
8、同属于一个集合”的关系外,别无其他关系,这是一种最简的关系外,别无其他关系,这是一种最简单的数据结构。单的数据结构。(2)线性结构)线性结构结构中的数据元素之间存在着结构中的数据元素之间存在着“一对一一对一”的关的关系。系。【例例1.1】学籍档案管理学籍档案管理假设一个学籍档案管理系统应包含如表假设一个学籍档案管理系统应包含如表1-1所所示的学生信息。示的学生信息。返回到本节目录1.1.2数据的逻辑结构数据的逻辑结构特点:特点:表中的每一行是一个数据元素(或记录、结点),它表中的每一行是一个数据元素(或记录、结点),它由学号、姓名、性别及出生年月等数据项组成。由学号、姓名、性别及出生年月等数据
9、项组成。表中数据元素之间是一种先后关系,对于表中任一结表中数据元素之间是一种先后关系,对于表中任一结点,与它相邻且在它前面的结点(称为直接前驱)点,与它相邻且在它前面的结点(称为直接前驱)最多只有一个;与表中任一结点相邻且在其后的结最多只有一个;与表中任一结点相邻且在其后的结点(称为直接后继)也最多只有一个。我们将这种点(称为直接后继)也最多只有一个。我们将这种关系称为关系称为“线性结构线性结构”。返回到本节目录1.1.2数据的逻辑结构数据的逻辑结构(3)树型结构)树型结构结构中的数据元素之间存在着结构中的数据元素之间存在着“一对多一对多”的关的关系。系。【例例1.2】人机对弈人机对弈人与计算
10、机进行对弈的部分图如图人与计算机进行对弈的部分图如图1-2为所示。为所示。图图1-2人机对弈图人机对弈图返回到本节目录1.1.2数据的逻辑结构数据的逻辑结构特点:特点:图中将每一个棋盘看作一个数据元素,则数据图中将每一个棋盘看作一个数据元素,则数据元素之间的关系要比表元素之间的关系要比表1-1要复杂许多。要复杂许多。图中数据元素之间是一对多关系,即一个数据图中数据元素之间是一对多关系,即一个数据元素向上和一个数据元素相连(称为双亲结元素向上和一个数据元素相连(称为双亲结点),向下和多个数据元素相连(称为孩子点),向下和多个数据元素相连(称为孩子结点)。我们将这种关系称为结点)。我们将这种关系称
11、为“树型结构树型结构”。4)图形结构或网状结构)图形结构或网状结构结构中的任意数据元素之间都可以有关系,元结构中的任意数据元素之间都可以有关系,元素之间存在着素之间存在着“多对多多对多”的关系。的关系。返回到本节目录1.1.2数据的逻辑结构数据的逻辑结构返回到本节目录1.1.2数据的逻辑结构数据的逻辑结构教学计划的关系图如图教学计划的关系图如图1-3所示。所示。图图1-3教学计划关系图教学计划关系图特点:特点:图中数据元素存在着多对多的任意关系。一个图中数据元素存在着多对多的任意关系。一个结点可能有多个直接前驱和直接后继。结点可能有多个直接前驱和直接后继。返回到本节目录1.1.2数据的逻辑结构
12、数据的逻辑结构1.1.3数据的存储结构数据的存储结构数据在计算机中的存储表示称为数据的存储结数据在计算机中的存储表示称为数据的存储结构,也称为物理结构。数据的存储结构是逻构,也称为物理结构。数据的存储结构是逻辑结构在计算机存储器中的实现。本书将介辑结构在计算机存储器中的实现。本书将介绍常用的两种基本的存储结构:顺序存储结绍常用的两种基本的存储结构:顺序存储结构和链式存储结构。构和链式存储结构。数据的逻辑结构和存储结构的关系是:存储结数据的逻辑结构和存储结构的关系是:存储结构是逻辑关系的映像与元素本身映像,是数构是逻辑关系的映像与元素本身映像,是数据结构的实现;逻辑结构是数据结构的抽象。据结构的
13、实现;逻辑结构是数据结构的抽象。返回到本节目录1.顺序存储结构顺序存储结构顺序存储结构:借助元素在存储器中的相对位顺序存储结构:借助元素在存储器中的相对位置来表示数据元素间的逻辑关系。置来表示数据元素间的逻辑关系。【例例1.4】对于表对于表1-1提出的学生信息登记表提出的学生信息登记表进行存储,假定每个元素占用进行存储,假定每个元素占用50个存储单元,个存储单元,数据从数据从1000号单元开始由低地址向高地址号单元开始由低地址向高地址存放,对应的顺序存储结构如表存放,对应的顺序存储结构如表1-3所示。所示。返回到本节目录1.1.3数据的存储结构数据的存储结构顺序存储结构的主要特点:顺序存储结构
14、的主要特点:v可实现对各数据元素的随机访问。这是因为可实现对各数据元素的随机访问。这是因为只要知道存储的首地址以及每个数据元素所只要知道存储的首地址以及每个数据元素所占的存储单元,就可以计算出各数据元素的占的存储单元,就可以计算出各数据元素的存储地址。存储地址。v不利于修改,在对数据元素进行插入、删除不利于修改,在对数据元素进行插入、删除运算时可能要移动一系列的数据元素。运算时可能要移动一系列的数据元素。返回到本节目录1.1.3数据的存储结构数据的存储结构2.链式存储结构链式存储结构链式存储结构:借助指示元素存储地址的指针链式存储结构:借助指示元素存储地址的指针表示数据元素间的逻辑关系。表示数
15、据元素间的逻辑关系。【例例1.5】对于表对于表1-1学生信息登记表进行链学生信息登记表进行链式存储时,在每个数据元素后方附加一个指式存储时,在每个数据元素后方附加一个指向向“下一个结点地址下一个结点地址”的指针字段,用于存的指针字段,用于存放后继数据元素的存储地址,每个数据元素放后继数据元素的存储地址,每个数据元素的地址是随机的,可以不连续。对应的链式的地址是随机的,可以不连续。对应的链式存储结构见表存储结构见表1-4所示。所示。返回到本节目录1.1.3数据的存储结构数据的存储结构链式存储结构的主要特点:链式存储结构的主要特点:v利于修改,在对数据元素进行插入、删除运利于修改,在对数据元素进行
16、插入、删除运算时,仅需修改数据元素的指针字段值,而算时,仅需修改数据元素的指针字段值,而不必移动数据元素。不必移动数据元素。v由于逻辑上相邻的数据元素在存储位置中不由于逻辑上相邻的数据元素在存储位置中不一定相邻,因此,链式存储结构不能对数据一定相邻,因此,链式存储结构不能对数据元素进行随机访问。元素进行随机访问。返回到本节目录1.1.3数据的存储结构数据的存储结构1.1.4抽象数据类型抽象数据类型1抽象数据类型的定义抽象数据类型的定义抽象数据类型(抽象数据类型(AbstractDataType,简,简称称ADT)是指一个数学模型以及定义在该模)是指一个数学模型以及定义在该模型上的一组操作。型上
17、的一组操作。2抽象数据类型的表示抽象数据类型的表示抽象数据类型实际上就是对该数据结构的定义。抽象数据类型实际上就是对该数据结构的定义。因为它定义了一个数据的逻辑结构以及在此因为它定义了一个数据的逻辑结构以及在此结构上的一组算法。可以用一个三元组表示:结构上的一组算法。可以用一个三元组表示:ADT=(,)(,)其中,其中,D是数据对象,是数据对象,S是是D上的关系集,上的关系集,P是是对对D的基本操作集。的基本操作集。返回到本节目录抽象数据类型通常是指由用户定义,用以表示应用问抽象数据类型通常是指由用户定义,用以表示应用问题的数据类型,抽象数据类型由基本的数据类型组题的数据类型,抽象数据类型由基
18、本的数据类型组成,并包括一组相关的服务(或称操作)。成,并包括一组相关的服务(或称操作)。抽象数据类型有些类似于抽象数据类型有些类似于pascal语言中的记录语言中的记录(record)类型和)类型和c语言中的构造(语言中的构造(struct)类型,)类型,但它增加了相关的服务。但它增加了相关的服务。3ADT的两个重要特征的两个重要特征(1)数据抽象用)数据抽象用ADT描述程序处理的实体时,强调描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外的是其本质的特征、其所能完成的功能以及它和外部用户的接口(即外界使用它的方法)。部用户的接口(即外界使用它的方法)。(2)数据封装将
19、实体的外部特性和其内部实现细节分)数据封装将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节。离,并且对外部用户隐藏其内部实现细节。返回到本节目录1.1.4抽象数据类型抽象数据类型1.2算法和算法分析算法和算法分析v1.2.1算法的概念算法的概念v1.2.2算法分析算法分析v1.2.3相关相关C语言知识回顾语言知识回顾返回到总目录返回到总目录返回到总目录返回到总目录1.2.1算法的概念算法的概念1算法的定义算法的定义瑞士著名的计算机科学家瑞士著名的计算机科学家N.Wirth所提出的著所提出的著名公式名公式“程序程序=算法算法+数据结构数据结构”,所谓算,所谓算法,就是为解决
20、特定问题而采取的步骤和方法,就是为解决特定问题而采取的步骤和方法。法。2算法的特性算法的特性一个算法应该具有下列特性:一个算法应该具有下列特性:(1)有穷性:一个算法必须(对任何合法的)有穷性:一个算法必须(对任何合法的输入值)在执行有限步之后结束。输入值)在执行有限步之后结束。(2)确定性:算法中的每一条指令必须有确)确定性:算法中的每一条指令必须有确切的含义,不会产生二义性。切的含义,不会产生二义性。返回到本节目录(3)可行性:算法中描述的操作都可以通过)可行性:算法中描述的操作都可以通过执行有限次基本操作来实现。执行有限次基本操作来实现。(4)输入:一个算法有零个或多个输入。)输入:一个
21、算法有零个或多个输入。(5)输出:一个算法必有一个或多个输出。)输出:一个算法必有一个或多个输出。3算法的评价算法的评价要设计一个好的算法通常需要考虑以下几方面要设计一个好的算法通常需要考虑以下几方面的要求:的要求:(1)正确性:要求算法能够正确地执行预先)正确性:要求算法能够正确地执行预先规定的功能,并达到所期望的性能要求。规定的功能,并达到所期望的性能要求。(2)可读性:为了便于理解、测试和修改算)可读性:为了便于理解、测试和修改算法,算法应该具有良好的可读性。法,算法应该具有良好的可读性。返回到本节目录1.2.1算法的概念算法的概念(3)健壮性:当输入非法的数据时,算法应)健壮性:当输入
22、非法的数据时,算法应能恰当地做出反应或进行相应处理,而不是能恰当地做出反应或进行相应处理,而不是产生莫名奇妙的输出结果。并且处理出错的产生莫名奇妙的输出结果。并且处理出错的方法不应是中断程序的执行,而是返回一个方法不应是中断程序的执行,而是返回一个表示错误或错误性质的值,以便在更高的抽表示错误或错误性质的值,以便在更高的抽象层次上进行处理。象层次上进行处理。(4)高效性:对同一个问题,执行时间越短,)高效性:对同一个问题,执行时间越短,算法的效率越高。算法的效率越高。(5)低存储量:完成相同的功能,执行算法)低存储量:完成相同的功能,执行算法所占用的存储空间应尽可能的少。所占用的存储空间应尽可
23、能的少。返回到本节目录1.2.1算法的概念算法的概念4算法的描述算法的描述为了表示一个算法,可以用多种不同的方法,为了表示一个算法,可以用多种不同的方法,常用的有自然语言、传统流程图、结构化流常用的有自然语言、传统流程图、结构化流程图、程图、N-S流程图等表示。本书采用流程图等表示。本书采用C的描的描述语言实现对各种数据结构及算法的操作描述语言实现对各种数据结构及算法的操作描述,算法是以函数形式描述,描述如下:述,算法是以函数形式描述,描述如下:类类型型标识标识符符函数名函数名(形式参数表形式参数表)/*算法算法说说明明*/语语句序列句序列返回到本节目录1.2.1算法的概念算法的概念1.2.2
24、算法分析算法分析在算法满足正确性的前提下,如何评价不同算法的优在算法满足正确性的前提下,如何评价不同算法的优劣呢?通常主要考虑算法的时间复杂度和空间复杂劣呢?通常主要考虑算法的时间复杂度和空间复杂度这两方面。一般情况下,鉴于运算空间(内存)度这两方面。一般情况下,鉴于运算空间(内存)较为充足,所以把算法的时间复杂度作为重点分析。较为充足,所以把算法的时间复杂度作为重点分析。1.时间复杂度(时间复杂度(TimeComplexity)一个算法所需的运算时间通常与所解决问题的规模大一个算法所需的运算时间通常与所解决问题的规模大小有关。问题规模是一个和输入有关的量,用小有关。问题规模是一个和输入有关的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实用教程 语言版
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内