第01章绪论(C++)_第1页
第01章绪论(C++)_第2页
第01章绪论(C++)_第3页
第01章绪论(C++)_第4页
第01章绪论(C++)_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、1叶核亚叶核亚数据结构数据结构(C+版版)(第(第3版版)2数据结构数据结构(C+版版)(第(第3版)版)第第1章章 绪论绪论第第2章章 线性表线性表第第3章章 串串第第4章章 栈与队列栈与队列第第5章章 数组和广义表数组和广义表第第6章章 树和二叉树树和二叉树第第7章章 图图第第8章章 查找查找第第9章章 排序排序第第10章章 综合应用设计综合应用设计3数据结构数据结构课程特点课程特点性质:性质:专业基础课,计算机专业核心课程;专业基础课,计算机专业核心课程;72学时,学时,4.5学分;课程设计学分;课程设计1周,周,1学分。学分。特点:特点:结构复杂,算法抽象;结构复杂,算法抽象;重点:重

2、点:线性表、二叉树、图、查找、排序;线性表、二叉树、图、查找、排序;难点:难点:链式存储结构,递归算法。链式存储结构,递归算法。4教学过程教学过程1. 72学时,讲课学时,讲课56学时,上机实验学时,上机实验16学时,学时,8次实验,课后自补实验。次实验,课后自补实验。2. 验收二次实验结果,第验收二次实验结果,第2、6章,每人不同章,每人不同题,题见附件,逐位验收,改进,通过后题,题见附件,逐位验收,改进,通过后写报告,计平时分写报告,计平时分20%。3. 课程设计,每人不同题,逐位验收,改进,课程设计,每人不同题,逐位验收,改进,通过后写报告。通过后写报告。4. 要求:不能用要求:不能用C

3、语言,必须用语言,必须用C+模板类;模板类;独立完成,不接受网上抄来程序。独立完成,不接受网上抄来程序。 5重申纪律重申纪律1. 旷课旷课1/3学时者,取消其考试资格。学时者,取消其考试资格。2. 考试不能提前交卷。考试要带有效证件(身考试不能提前交卷。考试要带有效证件(身份证或学生证)。不能作弊,代考后果是双份证或学生证)。不能作弊,代考后果是双双开除,考试作弊后果双开除,考试作弊后果 。3. 课程设计成绩与考试成绩关联,试卷编程题课程设计成绩与考试成绩关联,试卷编程题没做者,或考试卷面成绩较低者,重修,没没做者,或考试卷面成绩较低者,重修,没有补考。有补考。4. 教学风格,认真授课,严格管

4、理。考前有问教学风格,认真授课,严格管理。考前有问必答;考后不讨论分数。必答;考后不讨论分数。数据结构(C+版)(第3版) 6第第1章章 绪论绪论l1.1 数据结构的基本概念数据结构的基本概念l1.2 算法算法l1.3 Visual C+集成开发环境集成开发环境 目的:目的:勾勒数据结构课程的轮廓。勾勒数据结构课程的轮廓。 要求:要求:掌握掌握数据结构基本概念,理解抽象数据结构基本概念,理解抽象 数据类型概念;熟悉算法设计和分数据类型概念;熟悉算法设计和分 析方法。析方法。 重点:重点:数据的逻辑结构和存储结构。数据的逻辑结构和存储结构。 难点:难点:抽象数据类型,算法分析。抽象数据类型,算法

5、分析。数据结构(C+版)(第3版) 71.1 数据结构的基本概念数据结构的基本概念n 1.1.1 为什么要学习数据结构为什么要学习数据结构n软件设计是计算机学科各个领域的核心。软件设计软件设计是计算机学科各个领域的核心。软件设计时要考虑的首要问题是数据的表示、组织和处理方时要考虑的首要问题是数据的表示、组织和处理方法。数据结构设计和算法设计是软件系统设计的核法。数据结构设计和算法设计是软件系统设计的核心。心。n “数据结构数据结构+算法算法=程序设计程序设计” n 1.1.2 什么是数据结构什么是数据结构n 1.1.3 数据类型与抽象数据类型数据类型与抽象数据类型数据结构(C+版)(第3版)

6、81.1.2 什么是数据结构什么是数据结构n 数据数据(data)n 数据元素数据元素(data element) 、数据项数据项(data item) n 关键字(关键字(key) 、主关键字(、主关键字(primary key) n 数据结构数据结构(data structure)指数据元素之)指数据元素之间存在的关系。包含三方面:间存在的关系。包含三方面:n 数据的逻辑结构数据的逻辑结构n 数据的存储结构数据的存储结构n 数据操作数据操作数据结构(C+版)(第3版) 91. 数据的逻辑结构数据的逻辑结构 线性结构线性结构:数据元素只有一个前驱数据元素和一个后继数:数据元素只有一个前驱数据

7、元素和一个后继数据元素。据元素。 树结构树结构:每个数据元素只有一个前驱数据元素,可有零个:每个数据元素只有一个前驱数据元素,可有零个或若干个后继数据元素。或若干个后继数据元素。 图结构图结构:每个数据元素可有零个或若干个前驱数据元素,:每个数据元素可有零个或若干个前驱数据元素,零个或若干个后继数据元素。零个或若干个后继数据元素。数据结构(C+版)(第3版) 10 线性结构线性结构 学 号姓 名年 龄20020001王红1820020002张明1920020003吴宁1820020004秦风17表表1-1 学生信息表学生信息表 数据结构(C+版)(第3版) 11树树结结构构 数据结构(C+版)

8、(第3版) 12 图结构图结构图图1.3南京飞往昆明的航班路线图南京飞往昆明的航班路线图 数据结构(C+版)(第3版) 132. 数据的存储结构数据的存储结构 顺序存储结构顺序存储结构 链式存储结构链式存储结构数据结构(C+版)(第3版) 143. 数据操作数据操作1.初始化初始化。2.判断是否判断是否空空状态。状态。3.存取,指存取,指获得获得、设置设置指定元素值。指定元素值。4.统计统计数据元素个数。数据元素个数。5.遍历遍历(traverse),指按照某种次序访问一个数据结构中),指按照某种次序访问一个数据结构中的所有元素,并且每个数据元素只被访问一次。遍历一种的所有元素,并且每个数据元

9、素只被访问一次。遍历一种数据结构,将得到一个所有数据元素的线性序列。数据结构,将得到一个所有数据元素的线性序列。6.插入插入(insert)、)、删除删除(remove)指定元素。)指定元素。7.查找查找(search),指在数据结构中寻找满足给定条件的数),指在数据结构中寻找满足给定条件的数据元素。据元素。8.排序排序(sort),指对数据元素按照指定关键字值的大小递),指对数据元素按照指定关键字值的大小递增(或递减)次序重新排列。增(或递减)次序重新排列。数据结构(C+版)(第3版) 151.1.3 数据类型与抽象数据类型数据类型与抽象数据类型1. 数据类型数据类型(data type)是

10、指一个类型和)是指一个类型和定义在这个类型上的操作集合。定义在这个类型上的操作集合。2. 抽象数据类型抽象数据类型(Abstract Data Type,ADT)是指一个)是指一个逻辑逻辑概念上的类型和这个概念上的类型和这个类型上的类型上的操作操作集合。集合。即,一种数据结构的抽象数据类型包括:即,一种数据结构的抽象数据类型包括:n 数据的逻辑结构数据的逻辑结构n 数据操作数据操作数据结构(C+版)(第3版) 16ADT Complex复数抽象数据类型复数抽象数据类型 double real,imag; /实部和虚部实部和虚部 Complex(real,imag) /构造函数构造函数 Comp

11、lex add(Complex c) /加法加法 Complex sub(Complex c)/减法减法数据结构(C+版)(第3版) 17 数据:集合中的数据元素类型为数据:集合中的数据元素类型为T 操作:操作: bool empty() /判断集合是否为空判断集合是否为空 int count() /返回集合的元素个数返回集合的元素个数 bool contain(T x) /是否包含元素是否包含元素x void add(T x) /增加元素增加元素x void remove(T key) /删除删除key元素元素 void removeAll() /删除集合所有元素删除集合所有元素 void

12、print() /遍历输出遍历输出ADT Set 集合抽象数据类型集合抽象数据类型数据结构(C+版)(第3版) 18 /以下方法描述集合运算,参数是另一个集合以下方法描述集合运算,参数是另一个集合 bool operator=(Set &set) /比较是否相等比较是否相等 bool containAll(Set &set) /判断是否子集判断是否子集 void operator+=(Set &set) /集合并集合并 Set operator+(Set &set) /返回并集返回并集 Set operator*(Set &set) /返回交集返回交集

13、void operator-=(Set &set) /集合差集合差 Set operator-(Set &set) /返回差集返回差集 void retainAll(Set &set) /仅保留那些也包含在集合仅保留那些也包含在集合set中的元素中的元素ADT Set 集合抽象数据类型集合抽象数据类型数据结构(C+版)(第3版) 191.2 算法算法n 1.2.1 什么是算法什么是算法n 1.2.2 算法分析算法分析n 1.2.3 算法设计算法设计 第第1章章 绪论绪论数据结构(C+版)(第3版) 201.2.1 什么是算法什么是算法1. 算法定义算法定义 有穷性有穷性

14、 确定性确定性 输入输入 输出输出 可行性可行性1. 算法设计目标算法设计目标 正确性正确性 可读性可读性 健壮性健壮性 高时间效率高时间效率 高空间效率高空间效率一个一个算法算法(Algorithm)是一个有穷规则的)是一个有穷规则的集合,其规则确定一个解决某一特定类型问题集合,其规则确定一个解决某一特定类型问题的操作序列。的操作序列。 数据结构(C+版)(第3版) 213. 算法描述算法描述/在当前数据结构中,在当前数据结构中,顺序查找顺序查找key元素;元素;/key指定查找条件,包含元素关键字指定查找条件,包含元素关键字元素元素 search(T key) for (elem : 数据

15、结构中的每个元素数据结构中的每个元素) /遍历遍历 if (elem=key) /执行执行T的的=运算,运算, /定义元素相等规则定义元素相等规则 查找成功,返回元素或元素位置查找成功,返回元素或元素位置; 查找不成功,返回查找不成功标记查找不成功,返回查找不成功标记;数据结构(C+版)(第3版) 224. 算法与数据结构算法与数据结构图图1.6 线性表插入操作线性表插入操作数据结构(C+版)(第3版) 234. 算法与数据结构算法与数据结构图图1.6 线性表插入操作线性表插入操作数据结构(C+版)(第3版) 241.2.2 算法分析算法分析1. 度量算法的时间效率度量算法的时间效率算法的时间

16、效率指算法的执行时间随问题规模的算法的时间效率指算法的执行时间随问题规模的增长而增长的趋势,通常采用增长而增长的趋势,通常采用时间复杂度时间复杂度来度量算法来度量算法的时间效率。的时间效率。T(n)=O(f(n) 1. 度量算法的空间效率度量算法的空间效率空间复杂度空间复杂度指算法在执行时为解决问题所需要的指算法在执行时为解决问题所需要的额外内存空间,不包括输入数据所占用的存储空间。额外内存空间,不包括输入数据所占用的存储空间。 S(n)=O(f(n) 数据结构(C+版)(第3版) 25表表1-2 时间复杂度随时间复杂度随n变化情变化情况的比较况的比较时间复杂度时间复杂度n=8(23)n=10

17、n=100n=1000O(1)1111O(log2n)33.3226.6449.966O(n)8101001000O(nlog2n)2433.22664.49966O(n2)6410010000106数据结构(C+版)(第3版) 261.一个简单语句的时间复杂度为一个简单语句的时间复杂度为O(1)。int count=0; 2.一个循环的时间复杂度为一个循环的时间复杂度为O(n)。int n=8, count=0;for (int i=1; i=n; i+) count+;3.时间复杂度为时间复杂度为O(log2 n)的循环语句。的循环语句。 int n=8, count=0;for (int

18、 i=1; i=n; i*=2) count+;4.时间复杂度为时间复杂度为O(n2)的二重循环。的二重循环。int n=8, count=0;for (int i=1; i=n; i+) for (int j=1; j=n; j+) count+;【例例1.1】 算法时间复杂度分析。算法时间复杂度分析。 数据结构(C+版)(第3版) 27【例例1.1】 算法时间复杂度分析。算法时间复杂度分析。1.时间复杂度为时间复杂度为O(nlog2n)的二重循环。的二重循环。int n=8, count=0;for (int i=1; i=n; i*=2) for (int j=1; j=n; j+) c

19、ount+; 循环次数为循环次数为 。时间复杂度为。时间复杂度为O(nlog2n)。1.时间复杂度为时间复杂度为O(n)的二重循环。的二重循环。int n=8, count=0;for (int i=1; i=n; i*=2) for (int j=1; j=i; j+) count+;总的循环次数为总的循环次数为 。时间复杂度为。时间复杂度为O(n)。) 1(log2nn122421222loglog0nnnii数据结构(C+版)(第3版) 281.2.3 算法设计算法设计 【例例1.2】 求两个整数的最大公约数。求两个整数的最大公约数。目的:说明算法必要性。目的:说明算法必要性。1. 质因

20、数分解法质因数分解法2. 更相减损术更相减损术“以少减多,更相减损,求其等也,以等数约之。等数约以少减多,更相减损,求其等也,以等数约之。等数约之,即除也,其所以相减者皆等数之重叠,故以等数之,即除也,其所以相减者皆等数之重叠,故以等数约之。约之。” :(91,49)=(42,49)=(42,7)=7。 3. 欧几里德(欧几里德(Euclid)的辗转相除法)的辗转相除法 gcd(91,49)=gcd(49,42) =gcd(42,7)=gcd(7,0)=7数据结构(C+版)(第3版) 29返回返回a与与b的最大公约数的最大公约数int gcd(int a, int b) while (b!=0

21、) int temp = a%b; a = b; b = temp; return a;数据结构(C+版)(第3版) 30【思考题思考题1-1】1. 求求n个整数的最大公约数。个整数的最大公约数。2. 采用递归算法求最大公约数。采用递归算法求最大公约数。数据结构(C+版)(第3版) 31【例例1.3】 随机数序列。随机数序列。目的:目的: 随机数序列;随机数序列; C+函数模板;函数模板; 重载输出流运重载输出流运算符算符; 头文件。头文件。1.随机数序列随机数序列#include /其中定义随机数函数其中定义随机数函数rand()/将产生的将产生的n个随机数(范围是个随机数(范围是0size

22、- -1)存放于)存放于value数数组前组前n个元素个元素void random(int values, int n, int size) for (int i=0; in; i+) valuesi = rand() % size; /产生一个产生一个0size- -1之间的随机数之间的随机数数据结构(C+版)(第3版) 32【例例1.3】 随机数序列。随机数序列。1. 输出数组元素输出数组元素 #include using namespace std;template void print(T values, int n) for (int i=0; in; i+) coutvaluesi

23、 ; /T必须重载必须重载 cout、=、=运运算符算符bool isSorted(T values, int n)数据结构(C+版)(第3版) 341.3 Visual C+集成开发环境集成开发环境目的:目的:使用使用Visual C+集成开发环境。集成开发环境。 要求:要求:掌握编辑、编译、运行和调试掌握编辑、编译、运行和调试C+ 程序的基本技能。程序的基本技能。重点:重点:编辑、编译、运行、调试编辑、编译、运行、调试C+程序。程序。难点:难点:项目,程序调试技术。项目,程序调试技术。第第1章章 绪论绪论数据结构(C+版)(第3版) 351.3.1 Visual C+ 2008 集成开发环

24、境集成开发环境 1. 安装安装2. Visual C+ 集成开发环境组成集成开发环境组成 3. 项目项目4. 解决方案解决方案 数据结构(C+版)(第3版) 361.3.2 新建、编辑、编译和运行新建、编辑、编译和运行 C+程序程序1. 新建、添加、移除项目新建、添加、移除项目2. 新建、添加、移除文件新建、添加、移除文件3. 编译、运行编译、运行4. 打开、保存、关闭解决方案打开、保存、关闭解决方案5. 设置启动项目设置启动项目6. 设置环境属性设置环境属性 设置文本字体和颜色设置文本字体和颜色 设置用户头文件的查找路径设置用户头文件的查找路径 数据结构(C+版)(第3版) 371.3.3

25、程序调试技术程序调试技术1. 程序错误、发现时刻及错误处理原则程序错误、发现时刻及错误处理原则 语法错,编译时发现语法错,编译时发现 语义错,运行时发现语义错,运行时发现 采用程序调试技术,查找错误位置并确定采用程序调试技术,查找错误位置并确定错误性质。错误性质。 逻辑错,系统无法发现逻辑错,系统无法发现 数据结构(C+版)(第3版) 382. 调试运行调试运行(1)设置断点)设置断点(2)调试界面)调试界面(3)单步运行)单步运行 Step Into跟踪进入函数内部。跟踪进入函数内部。 Step Over将函数调用作为一条语句将函数调用作为一条语句,一,一次执行完。次执行完。 Step Ou

26、t从函数中返回从函数中返回函数调用语句。函数调用语句。(4)分段运行)分段运行 Run to Cursor运行至光标所在行。运行至光标所在行。 Go运行至下一个断点。运行至下一个断点。 数据结构(C+版)(第3版) 392. 调试运行调试运行(5)查看变量的当前值)查看变量的当前值 Variables视图视图显示当前作用域内所显示当前作用域内所有变量的当前值。有变量的当前值。 Watch视图视图显示用户指定的变量的当显示用户指定的变量的当前值。前值。 (6)跟踪运行析构函数)跟踪运行析构函数 数据结构(C+版)(第3版) 40习题解答习题解答1.2.2 C+语言的面向对象算法设计语言的面向对象

27、算法设计 1. 类的声明与封装类的声明与封装 C+语言如何声明一个类?有哪些封装类的措语言如何声明一个类?有哪些封装类的措施?有哪些默认函数和运算?怎样才能输入输出施?有哪些默认函数和运算?怎样才能输入输出一个实例?怎样才能比较一个类的两个实例是否一个实例?怎样才能比较一个类的两个实例是否相等及其大小?相等及其大小? 一个类如果一个类如果没有声明构造函数,能否创建实例?没有声明构造函数,能否创建实例?为什么?为什么? 一个类如果没有声明析构函数,能否析构实例?一个类如果没有声明析构函数,能否析构实例?为什么?为什么? 一个类需要重载哪些运算符?怎样重载运算符?一个类需要重载哪些运算符?怎样重载运算符?/(见习题解答第(见习题解答第2页)页)数据结构(C+版)(第3版) 41【习

温馨提示

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

评论

0/150

提交评论