数据结构与算法应用教程PPT课件_第1页
数据结构与算法应用教程PPT课件_第2页
数据结构与算法应用教程PPT课件_第3页
数据结构与算法应用教程PPT课件_第4页
数据结构与算法应用教程PPT课件_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构与算法实用教程 主编 高佳琴数据结构与算法应用教程 高职高专 ppt 课件第1页/共41页第第1章概述章概述本章要点:1)数据、数据元素、数据结构、数据的逻辑结构与物理结构的概念以及逻辑结构与物理结构间的关系。2)算法的定义、特性,算法的时间复杂度和空间复杂度分析。3)C语言指针的定义、指针的基本操作、动态分配函数等。本章难点:1)数据的逻辑结构和物理结构的关系。2)算法的时间复杂性和空间复杂性分析。数据结构与算法应用教程 高职高专 ppt 课件第2页/共41页1)从具体问题分析入手找出解决该问题的方法(数据模型)。2)设计解决该问题的具体步骤(算法)。3)选择程序设计语言和数据类型,

2、编写代码(源程序),源程序经编译后得到可直接运行的程序(目标程序)。第1章概述图1-1计算机解决问题的一般步骤数据结构与算法应用教程 高职高专 ppt 课件第3页/共41页第第1章概述章概述1.1什么是数据结构1.2基本概念和术语1.3算法和算法分析1.4C语言基础数据结构与算法应用教程 高职高专 ppt 课件第4页/共41页1.1什么是数据结构什么是数据结构从一个简单的学生档案管理系统入手,引入数据结构的相关概念。问题描述:学生档案管理系统的主要功能包括:输入、修改、插入、删除、查找学生档案,并进行数据的统计(如统计男、女生比例等)。将存储顺序与逻辑顺序保持一致的存储结构就是顺序存储结构,如

3、图1-2所示,而在用链表存储信息时,信息在内存中存储的顺序与逻辑顺序不要求一致。它是通过为每一条记录增加一个存储下一个学生信息地址的信息项来表示学生的次序,这就是链式存储结构,如图1-3所示。数据结构与算法应用教程 高职高专 ppt 课件第5页/共41页1.1什么是数据结构什么是数据结构图1-3链式存储结构数据结构与算法应用教程 高职高专 ppt 课件第6页/共41页1.2基本概念和术语基本概念和术语(1)数据 (2)数据元素 (3)数据项 (4)数据逻辑结构(5)数据物理结构 (6)数据类型数据结构与算法应用教程 高职高专 ppt 课件第7页/共41页(1)数据指所有能输入到计算机中并能被计

4、算机程序处理的符号的总称。数据结构与算法应用教程 高职高专 ppt 课件第8页/共41页(2)数据元素在计算机程序中通常作为一个整体进行考虑和处理的基本数据单位。一个数据元素可以由若干个数据项组成,也可以只由一个数据项组成。数据元素又被称为元素、结点或记录。数据结构与算法应用教程 高职高专 ppt 课件第9页/共41页(3)数据项数据项是不可分割的、具有独立意义的最小数据单位,数据项有时也被称字段或域。学生档案信息表中每一行记录了一个学生的档案信息,在数据操作中作为一个整体考虑,对应为一个数据元素。这个记录中包含有学号、姓名、性别等若干个数据项。数据操作的基本单位是数据元素,如学生的插入或删除

5、一定是对应于一个学生的全部信息,而不是对应于其中的某个数据项。结论:数据、数据元素、数据项实际上反映了数据组织的三个层次:数据可由若干个数据元素构成,而数据元素又可以由一个或若干个数据项组成。第10页/共41页(4)数据逻辑结构1)线性结构。2)非线性结构。树形结构是指该结构中的数据元素之间存在一对多的关系,如图1-5b所示。其特点是该结构中除了有一个被称为根的结点没有前趋外,其余元素有且只有一个直接前趋,可以有多个后继。图形结构(网状结构)是最复杂的数据结构,数据元素之间存在多对多联系,如图1-5c所示。其特点是该结构中任何元素都可以有多个直接前趋,也可以有多个后继。是指数据元素之间的抽象关

6、联方式。数据元素之间存在的一种或多种特定的关系被称为数据的逻辑结构。第11页/共41页(4)数据逻辑结构图1-4例1-2的逻辑结构表示图第12页/共41页图1-5三种基本逻辑结构a)线性结构b)树形结构c)图形结构(4)数据逻辑结构第13页/共41页(4)数据逻辑结构图1-6例1-3逻辑结构图第14页/共41页(5)数据物理结构数据在计算机存储器中的存放方式称为数据的物理结构,简称存储结构。数据元素在计算机中主要有两种不同的存储方法:顺序存储结构和链式存储结构。第15页/共41页(6)数据类型在用高级语言编写的程序中,所有的变量、常量或表达式都具有确定的数据类型。数据类型包含了数据的取值范围及

7、基本操作运算,可以这样认为:数据类型是程序设计语言中已经实现了的数据结构。第16页/共41页1.3算法和算法分析算法和算法分析第17页/共41页1.算法的定义及其特征2.算法的描述方法第18页/共41页1.算法的定义及其特征1) 正确性。算法必须解决具体的问题,完成所期望的功能,给出正确的输出。2) 确定性。算法执行的每一步和下一步必须确定,不能有二义性。3) 有限性。一个算法必须由有限步组成。无限步组成的算法无法用计算机程序来实现,因此算法必须可以终止,不能进入死循环。4) 输入。一个算法有零个或多个输入。5) 输出。一个算法有一个或多个输出。第19页/共41页2.算法的描述方法(1)图形工

8、具用一些基本符号表示处理、输入、输出等操作,比较流行的框图有传统流程图和结构化流程图,如图1-7所示,其优点是直观、易懂。图1-7流程图a)传统流程图b)结构化流程图第20页/共41页2.算法的描述方法图1-8例1-4流程图a)传统流程图b)结构化流程图第21页/共41页2.算法的描述方法(2)伪语言描述伪语言与高级程序设计语言有些类似,有比较严格的外语法,如用ifelse表示选择结构,用while表示循环结构,对内语法如变量定义等无明确要求。(3) C语言编写的程序或函数这是可在计算机上运行并获得结果的算法,使给定问题能在有限时间内被求解,通常这种算法也称程序。第22页/共41页解决一个问题

9、可以有多种算法。例如对一组数据排序,可给出6种甚至更多种排序算法,有的排序算法适合于元素个数少的序列,有的适合于元素个数多的序列,有的则适合于基本有序的排序。因此在一个算法设计好以后,还需要对其进行分析,确定一个“好”的算法。下面讨论算法设计的目标和算法分析的方法。1) 正确性。2) 易读性。3) 健壮性。合法输入。当输入的三条边a,b,c满足构成三角形的条件(a+bc,a+cb,b+ca)时,算法应能得到正常的结果。非法输入。当输入的三条边a,b,c有不满足构成三角形的条件(a+bc,a+cb,b+ca)时,算法应给出相应的提示信息。4) 高效率。第23页/共41页1.4C语言基础语言基础第

10、24页/共41页1.一维数组的定义2.一维数组元素的引用第25页/共41页1.一维数组的定义1) 数组名的命名规则与普通变量名相同。2) 常量表达式表示数组元素的个数,用方括号括起来。3) 定义了一维数组后,系统给该一维数组分配一组连续的存储空间,数组名表示该段存储空间的首地址。第26页/共41页2.一维数组元素的引用1) 数组不能整体引用,必须单个引用。2) 数组元素的下标可以是常量、变量或表达式。3) C程序规定,数组元素下标的下界为0,上界为数组长度减1。4) 人们习惯使用单循环(for循环结构),通过控制循环变量对一维数组进行访问。第27页/共41页1.指针变量定义2.指针引用3.指针

11、与数组4.指针作为函数参数第28页/共41页1.指针变量定义1) “ * ”表示其后定义的变量是一个指针变量。2)基类型表示指针变量所指向的数据类型,即一个指针变量只能存储同一种数据类型变量的地址。第29页/共41页2.指针引用1)取址运算符&,其作用是获取变量所占用的存储单元的首地址。2)间接访问运算符 ,其作用是通过指针变量访问它所指向的变量。第30页/共41页3.指针与数组数组名代表数组首地址,属指针常量。用指针变量访问数组更加灵活、方便。用指针变量p访问数组a比较方便,p+2表示数组元素a2的地址, *(p+2)与a2等价第31页/共41页4.指针作为函数参数指针作为函数参数的

12、作用是将一个变量的地址传递到函数的指针变量形参,共享对应的实参的存储单元,因此形参值的改变将引起实参值的改变。由于数组名代表指针常量,因此指针作函数参数,通常与数组的操作相关。第32页/共41页1.结构体类型的定义2.结构体变量的定义3.结构体成员的引用4.指向结构体的指针变量第33页/共41页1.结构体类型的定义1) 上述形式定义的结构体类型名为struct student,而非student。2) 若想为结构体类型定义一个简单的名称,可使用typedef命令。3) typedef命令的功能是给一种数据类型取个别名,命令格式为:4)结构体类型在定义时,可直接使用typedef为自定义数据类型

13、取名。第34页/共41页2.结构体变量的定义如同标准数据类型int一样,自定义数据类型后,并没有在内存开辟存储空间,必须定义变量才能引用其成员数据项。结构体变量占用实际内存的大小可用sizeof(变量名|类型名)函数求出。第35页/共41页3.结构体成员的引用1) 结构体变量的成员可以看成是与普通变量一样进行各种运算。2)结构体成员本身是一个结构体类型时,可以通过逐层分解的方法找到最低层的成员。第36页/共41页4.指向结构体的指针变量指向结构体的指针变量定义格式为:结构体类型名*指针变量名;第37页/共41页由于程序中存在着分支、循环等结构及复杂数据类型,因此造成了程序运行时的变化规律和其静

14、态结构之间存在着一定的差异。数据结构中所描述的数据及算法比较复杂,程序规模也比一般C语言程序要大,因此仅靠阅读程序很难掌握程序运行过程中各变量值的动态变化,这就给程序调试带来了很大的困难。如果能够在程序运行过程中动态地显示程序执行的流向和各变量的值,将有助于读者了解程序的动态运行情况,从而更好、更快地调试程序。本书附录1介绍了Turbo C集成环境下的调试手段。第38页/共41页1.填空题(1)线性结构中,元素之间存在_关系;树形结构中,元素之间存在_关系;图形结构(网状结构)中,元素之间存在_关系。(2) 算法的五个基本特征是:_。(3) 评价算法的性能从算法效率的角度看主要从_及_进行分析。(4) 数据结构被形式地定义成(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论