数据结构-C语言描述(耿国华主编)教案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安文理学院精品课《数据结构》
教案
计算机科学系
韩利凯
《数据结构》
第一章绪论
[教学目标]
掌握数据结构的定义、内容、方法、描述、评价。
[重点、难点]
数据结构的研究范围,研究采用的方法,算法规则描述的工具,对算法作性能评价。[教学方法]
用多媒体课件( ppt )以及与生活实例相结合等方法讲授,这样便于描述相关概念及学生记笔记,加深他们的印象,使基础知识掌握地比较牢固。
[学习要点]
1. 熟悉各名词、术语的含义,掌握基本概念,特别是数据的逻辑结构和存储结构之间的关系。分清哪些是逻辑结构的性质,哪些是存储结构的性质。
2. 了解抽象数据类型的定义、表示和实现方法。
3.理解算法五个要素的确切含义:①动态有穷性(能执行结束);②确定性(对于相同的输入执行相同的路径);③有输入;④有输出;⑤可行性(用以描述算法的操作都是足够基本的)。
4.掌握计算语句频度和估算算法时间复杂度的方法。
1.1 什么是数据结构(定义)
首先介绍数据结构的相关名词。
1.数据(Data)
数据是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。。
2.数据元素(Data Element)
数据元素是组成数据的基本单位 ,是数据集合的个体,在计算机中通常作为一个整体进行考虑和处理。例如:学生登记表是数据,每一个学生的记录就是一个数据元素。
3.数据对象(Data Object)
数据对象是性质相同的数据元素的集合,是数据的一个子集。
4.数据结构(DA TA Structure)
数据结构是指相互之间存在一种或多种特定关系的数据元素集合,是带有结构的数据元素的集合,它指的是数据元素之间的相互关系,即数据的组织形式。
5.数据类型(Data Type)
数据类型是一组性质相同的值集合以及定义在这个值集合上的一组操作的总称。
6.数据抽象与抽象数据类型
1)数据的抽象
高级语言中提供整型、实型、字符、记录、文件、指针等多种数据类型,可以利用这些类型构造出象栈、队列、树、图等复杂的抽象数据类型。
2)抽象数据类型(Abstract Data Type)
抽象数据类型(简称ADT)是指基于一类逻辑关系的数据类型以及定义在这个类型之上的一组操作。
抽象数据类型是近年来计算机科学中提出的最重要的概念之一,它集中体现了程序设计中一些最基本的原则:分解、抽象和信息隐藏。
一个抽象数据类型确定了一个模型,但将模型的实现细节隐藏起来;它定义了一组运算,但将运算的实现过程隐藏起来。
用抽象数据类型的概念来指导问题求解的过程,可以用图1.4来表示:
数据结构是基础,抽象数据类型是中枢。
1.2 数据结构的内容
数据结构的内容可归纳为三个部分。逻辑结构、存储结构、运算集合。
数据结构是一门主要研究怎样合理地组织数据、建立合适的数据结构、提高计算机执行程序所用的时空效率的学科。
1.3 算法
1.算法(Algorithm)定义
算法是规则的有限集合,是为解决特定问题而规定的一系列操作。
2.算法的特性
⑴有限性有限步骤之内正常结束,不能形成无穷循环。
⑵确定性算法中的每一个步骤必须有确定含义,无二义性得以实现。
⑶输入有多个或0个输入
⑷输出至少有一个或多个输出。
⑸可行性原则上能精确进行,操作可通过已实现基本运算执行有限次而完成。
在算法的五大特性中,最基本的是有限性、确定性、可行性。
3.算法设计的要求
一般应该具有以下几个基本特征:
1)算法的正确性2)可读性3)健壮性4)高效率和低存储量
1.4 算法描述的工具
1.算法、语言、程序的关系
先分析数据结构中算法、语言、程序的关系:
⑴算法:描述了数据对象的元素之间的关系(包括数据逻辑关系、存贮关系描述)。
⑵描述算法的工具:(自然语言、框图或高级程序设计语言)
⑶程序是算法在计算机中的实现(与所用计算机及所用语言有关)
2.设计实现算法过程步骤:
●找出与求解有关的数据元素之间的关系(建立结构关系)
●确定在某一数据对象上所施加运算
●考虑数据元素的存储表示
●选择描述算法的语言
●设计实现求解的算法,并用程序语言加以描述。
3.类描述算法的语言选择
采用了标准C语言作为算法描述的工具。
1.5 对算法作性能评价
1.性能评价
对问题规模与该算法在运行时所占的空间S与所耗费的时间T给出一个数量关系的评价。
2.有关数量关系计算
数量关系评价体现在时间——算法编程后在机器中所耗费时间。
数量关系评价体现在空间——算法编程后在机器中所占存储量。
1)关于算法执行时间
一个算法的执行时间大致上等于其所有语句执行时间的总和,对于语句的执行时间是指该条语句的执行次数和执行一次所需时间的乘积。
2)语句频度
语句频度是指该语句在一个算法中重复执行的次数。
3)算法的时间复杂度:
所谓算法的时间复杂度,即是算法的时间量度记做:
T(n)=O(f(n))
它表示随问题规模n的增大算法的执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。
4)数据结构中常用的时间复杂度频率计数
数据结构中常用的时间复杂度频率计数有7个:
O(1) 常数型 O(n)线性型 O(n2)平方型 O(n3)立方型
O(2n)指数型 O(log2n)对数型 O(nlog2n)二维型
5)最坏时间复杂度
算法中基本操作重复执行的次数还随问题的输入数据集的不同而不同。
6)算法的空间复杂度
关于算法的存储空间需求,类似于算法的时间复杂度,我们采用空间复杂度作为算法所需存储空间的量度,记做:S(n)=O(f (n))
1.6 关于学习数据结构
1.数据结构课程地位
数据结构发展趋势包括两个方面:一是面向专门领域中特殊问题的数据结构的研究和发展,如图形数据结构、知识数据结构、空间数据结构,另一方面,从抽象数据类型的角度,用面向对象观点来讨论数据结构,已成为新的发展趋势。
2.数据结构课程学习特点
《数据结构》课程教学目标要求学生学会分析数据对象特征,掌握数据组织方法和计算机的表示方法,以便为应用所涉及数据选择适当的逻辑结构、存储结构及相应算法,初步掌握算法时间空间分析的技巧,培养良好的程序设计技能。