1 / 74

学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

思考. 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得. 考研?. 选择喜欢的专业,适合的学校 掌握基础,循序渐进 考试科目:合理安排复习时间 英语、数学、政治、专业课. 考研专业课. 试卷考核内容: 4 个部分: 数据结构 45 分、 计算机组成原理 45 分、 操作系统 35 分 计算机网络 25 分。 题型方面: 单项选择题占 80 分 综合应用题 70 分. 本课程内容: 教是为了不教,学是为了会学. 数据结构: 目标:在理解算法思想的基础上读懂算法,进而设计算法。 内容: 1. 思想

adair
Download Presentation

学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 思考 • 学习的目的: • 升学?就业?创业?终身学习 • 心态:想法决定行为,张驰有度 • 课程要求:学有所得

  2. 考研? • 选择喜欢的专业,适合的学校 • 掌握基础,循序渐进 • 考试科目:合理安排复习时间 • 英语、数学、政治、专业课

  3. 考研专业课 试卷考核内容:4个部分: • 数据结构45分、 • 计算机组成原理 45分、 • 操作系统 35分 • 计算机网络 25分。 题型方面: • 单项选择题占80分 • 综合应用题70分

  4. 本课程内容:教是为了不教,学是为了会学 数据结构: • 目标:在理解算法思想的基础上读懂算法,进而设计算法。 • 内容:1.思想 2.算法分析 3.算法练习 4.考研真题 英语:翻译,写作。 看懂,翻译,熟读,背诵,默写

  5. 考核方式与分值比例 出勤:无意外情况,迟到一次扣掉2分; 无故旷课扣掉10分; 请假1次扣3分,超过3次,按旷课处理。以上扣分累计上限20分。 课堂表现:提问:教师上课随机叫人回答问题、抢答、小组讨论,每回答对一次,标记一次,本学期完成3次即可得到20分,回答次数不限。 作业:课后作业共批改2次,每次15分,二次作业共30分 测验:期中一次,期末一次,每次折合为15分。共30分。

  6. 数据结构DATA STRUCTURE

  7. 考查目标定位 • 理解数据结构的基本概念,逻辑结构、存储结构,以及各种基本操作的实现; • 时间复杂度、空间复杂度分析; • 能够选择合适的数据结构和方法进行问题求解, • 具备采用C或C++或JAVA语言设计程序与实现算法的能力。

  8. 数据结构考研大纲 一、线性表 (一)线性表的定义和基本操作 (二)线性表的实现 1.顺序存储结构 2.链式存储结构 3.线性表的应用 二、栈、队列和数组 (一)栈和队列的基本概念 (二)栈和队列的顺序存储结构 (三)栈和队列的链式存储结构 (四)栈和队列的应用 (五)特殊矩阵的压缩存储 三、树与二叉树 (一)树的概念 (二)二叉树 1.二叉树的定义及其主要特征 2.二叉树的顺序存储结构和链式存储结构 3.二叉树的遍历 4.线索二叉树的基本概念和构造 5.二叉排序树 6.平衡二叉树 (三)树、森林 1.书的存储结构 2.森林与二叉树的转换 3.树和森林的遍历        (四)树的应用 1.等价类问题 2.哈夫曼(Huffman)树和哈夫曼编码

  9. 数据结构考研大纲 三、图   (一)图的概念   (二)图的存储及基本操作 1.邻接矩阵法 2.邻接表法    (三)图的遍历 1.深度优先搜索 2.广度优先搜索    (四)图的基本应用及其复杂度分析 1.最小(代价)生成树 2.最短路径 3.拓扑排序 4.关键路径 四、查找 (一)查找的基本概念 (二)顺序查找法 (三)折半查找法 (四)B-树 (五)散列(Hash)表及其查找 (六)查找算法的分析及应用 五、内部排序        (一)排序的基本概念        (二)插入排序 1.直接插入排序 2.折半插入排序        (三)气泡排序(bubblesort)        (四)简单选择排序        (五)希尔排序(shellsort)        (六)快速排序        (七)堆排序        (八)二路归并排序(mergesort)        (九)基数排序        (十)各种内部排序算法的比较        (十一)内部排序算法的应用

  10. 第一章 绪论 • 1.1 《数据结构》课程研究的内容 • 1.2 《数据结构》课程的发展历史及课程重要性 • 1.3 基本概念和术语 • 1.4 数据类型、抽象数据类型、算法

  11. 本节目标 理解:对比辨析深刻理解概念 • 数据结构,程序与算法  • 存储结构与逻辑结构 • 数据、数据元素、数据项、数据对象、数据结构 • 数据类型、抽象数据类型 掌握: • 抽象数据类型的定义

  12. 1.1《数据结构》课程研究的内容 数据结构就是研究计算机非数值计算问题中的数据对象以及它们之间的关系和操作算法的学科,具体主要包含三个方面的内容: • ①数据的逻辑结构--数据关系之间的逻辑关系 • ②数据的存储(物理)结构--数据的逻辑结构在计算机中的表示 • ③操作算法----插入、删除、修改、查询、排序等

  13. 其中, • 数据的逻辑结构: • 集合 • 线性结构 -----表、栈、队列 • 非线性结构 -----树、图 • 数据的存储结构: • 内存:顺序存储结构 -----数组 • 链式存储结构 -----指针 • 外存:索引存储 •    散列存储

  14. 数据结构主要强调两个方面的内容: • ①数据之间的关系,即数据之间的逻辑结构和存储结构; • ②针对这些关系的基本操作。 • 类与数据结构之间的对应关系:

  15. 1. 数据:能输入到计算机中的符号集合. • 2. 数据元素: 数据的基本单位. • 3. 数据对象: 具有相同性质的数据元素的集合. • 4. 数据结构: DATA STRUCTURE 数据及其相互关系的集合. 分为逻辑结构和存储结构(物理结构). 数据结构----------------类CLASS 数据之间的关系------- 属性 基本操作 ------------- 方法

  16. 表示: Data_Structure =(D,R) • 例: 数据结构T=(D,R),其中: • D={a,b,c,d,e,f,g,h,i,j} • R={(a,b),(a,c),(a,d),(b,e),(c,f),(c,g),(d,h),(d,i),(d,j)} • T是一个树形结构。 • 其中:D是数据元素的有限集,R是D上关系的有限集

  17. 5. 数据类型定义:一类数据的集合, 以及定义于这个数值集合上的一组操作的总称。 C语言中的数据类型 基本数据类型如int等、指针类型、数组类型、结构体类型、共用体类型

  18. 18设计数据结构浙江大学 1994 一 、3(5分) 用来表示某一银行储户的基本信息: 账号、姓名、开户年月日、储蓄类型、存入累加数、利息、帐面总数。 struct 结构体名 {类型名1 成员名1; 类型名2成员名2; ……; }变量名表列; typedef 数据类型 新类型名; Typedef struct { 类型名1 成员名1; 类型名2成员名2; ……; }定义的新数据类型名; 新类型名 变量名; //声明新的类型名代替已有类型名 struct node {int year,month,day; }date; typedef struct {int num;//帐号 char name[8];//姓名 struct node date;//开户年月日 int tag;//储蓄类型,如:0- 零存,1- 一年定期…… float put;//存入累加数; float interest;//利息 float total;//帐面总数 }count; Count CHX,CHY;

  19. 6. 抽象数据类型(ADTs: Abstract Data Types) • 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。 • 抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。

  20. ADT 抽象数据类型名{数据对象:<数据对象的定义>数据关系:<元素间关系定义>基本操作:操作1初始条件: 操作结果: 操作2……操作n }ADT抽象数据类型名 抽象数据类型的定义: ADT triplet {数据对象:D={e1,e2,e3|e1,e2,e3∈ElemSetd}数据关系:R1={<e1,e2>,<e2,e3>}基本操作: Get(T,i,&e) 初始条件:三元组T存在,1≤ i ≤3 操作结果: 用e返回T的第i元的值 Max(T,&e) 初始条件:三元组T存在 操作结果:用e返回T的三个元素中 的最大值……}ADTtriplet

  21. 3. 数据类型和抽象数据类型是如何定义的。二者有何相同和不同之处,抽象数据类型的主要特点是什么?使用抽象数据类型的主要好处是什么?【北京邮电大学 1994 一(8分)】 • 数据类型是一个值的集合和操作的集合。如数据类型是厂家提供给用户的已实现了的数据结构。 • “抽象数据类型(ADT)”指一个数学模型及定义在该模型上的一组操作。“抽象”的意义在于数据类型的数学抽象特性。抽象数据类型的定义仅取决于它的逻辑特性,而与其在计算机内部如何表示和实现无关。 • 抽象数据类型和数据类型实质上是一个概念。 • ADT的范围更广,它已不再局限于机器已定义和实现的数据类型,还包括用户在设计软件系统时自行定义的数据类型。 • 使用抽象数据类型定义的软件模块含定义、表示和实现三部分,封装在一起,对用户透明(提供接口),不必了解实现细节

  22. 11.数据结构与数据类型有什么区别?哈尔滨工业大学 2001 三、1(3分) • “数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。作为科学概念,目前尚无公认定义,一般认为, • 讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。 • 数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构。

  23. 数据结构是一门研究什么内容的学科?【燕山大学 1999 二、1 (4分)】 2. 数据元素之间的关系在计算机中有几种表示方法?各有什么特点?【燕山大学1999 二、2(4分)】 //数据的存储结构由哪四种基本的存储方法实现?【山东科技大学 2001 一、1(4分)】 • 是研究在非数值计算的程序设计问题中,计算机的操作对象及对象间的关系和施加于对象的操作等的学科。 • 顺序存储、链式存储、索引存储、散列存储

  24. 4. 回答问题(每题2分)【山东工业大学 1997 一 (8分)】 (1)在数据结构课程中,数据的逻辑结构,数据的存储结构及数据的运算之间存在着怎样的关系? (2)若逻辑结构相同但存储结构不同,则为不同的数据结构。这样的说法对吗?举例说明之。 (3)在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。这样说法对吗?举例说明之。 (4)评价各种不同数据结构的标准是什么? (1)数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则是依赖于存储结构。

  25. 4. 回答问题(每题2分)【山东工业大学 1997 一 (8分)】 (2)若逻辑结构相同但存储结构不同,则为不同的数据结构。这样的说法对吗?举例说明之。 (3)在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。这样说法对吗?举例说明之。 (4)评价各种不同数据结构的标准是什么? (2)逻辑结构相同但存储不同,可以是不同的数据结构。例如,线性表的逻辑结构属于线性结构,采用顺序存储结构为顺序表,而采用链式存储结构称为线性链表。

  26. 4. 回答问题(每题2分)【山东工业大学 1997 一 (8分)】 (3)在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。这样说法对吗?举例说明之。 (4)评价各种不同数据结构的标准是什么? (3)栈和队列的逻辑结构相同,其存储表示也可相同(顺序存储和链式存储),但由于其运算集合不同而成为不同的数据结构。

  27. 4. 回答问题(每题2分)【山东工业大学 1997 一 (8分)】 (4)评价各种不同数据结构的标准是什么? (4)一是所选数据结构是否准确、完整的刻划了问题的基本特征;二是是否容易实现(如对数据分解是否恰当;逻辑结构的选择是否适合于运算的功能,是否有利于运算的实现;基本运算的选择是否恰当。)

  28. 8.对于一个数据结构,一般包括哪三个方面的讨论?【北京科技大学 1999 一、1(2分)】 10. 若将数据结构定义为一个二元组(D,R),说明符号D,R 应分别表示什么? 【北京科技大学 2001 一、1(2分)】 • 逻辑结构、存储结构、操作(运算) • D是数据元素的有限集合 • S是D上数据元素之间关系的有限集合。

  29. 7根据数据元素之间的逻辑关系,一般有哪几类基本的数据结构?【北京科技大学 1998 一、1】【同济大学 1998】 • 集合 • 线性结构 • 树形结构 • 图形或网状结构

  30. 程序=数据结构+算法 • 算法:是对特定问题求解的一种描述,是为解决某一类问题而设计的一个指令序列。 • 程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法。 • 程序=数据结构+算法

  31. 小结 • 考研的目的、心态;考试大纲解析; • 理解数据结构的基本概念及相关术语 • 理解:对比辨析深刻理解概念 • 数据结构,程序与算法  • 存储结构与逻辑结构 • 数据、数据元素、数据项、数据对象、数据结构 • 数据类型、抽象数据类型 • 掌握: • 抽象数据类型的定义

  32. 第二节 • 复习: • 数据结构研究的主要内容? • 常见的逻辑结构及物理结构有哪些? • 程序、数据结构和算法的关系? • 数据类型的定义 • 抽象数据类型的定义

  33. 复习及导入:学生信息处理 • 设计数据结构,用于表示学生的信息。 • 学生的信息包括: • 学号、姓名、性别、年龄、专业等数据项。 • 功能要求 • ⑴ 插入:将某学生的基本信息插入到表中; • ⑵ 删除:将满足条件的基本信息删除; • ⑶ 修改:对基本信息的数据项进行修改; • ⑷ 查询:查找满足条件的学生; • ⑸ 输出:将信息表中的全部(或满足条件)基本信息输出。 Typedef struct { int num; //学号 Char name[8]; //姓名 Char sex[2]; //性别 Int age; //年龄 Char major[24]; //专业 }student;

  34. 新授主要内容 • 算法 • 算法特性及评价标准 • 算法时间复杂度计算 • C语言基础知识 • 算法分析

  35. 1.4 算法和算法分析 • 1. 定义:算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。 • 2. 特性: • 输入有0个或多个输入 • 输出 有一个或多个输出(处理结果) • 确定性 不会产生二义性 • 有穷性 算法应在执行有穷步后结束 • 可行性 在现有环境下能够实现

  36. 3. 评价算法的标准 • 正确性 • 可读性 • 健壮性(鲁棒性) • 时间复杂性 • 空间复杂性 4. 算法的描述方法 (1)自然语言 (2) 流程图 (3) 伪代码 (4) 程序设计语言 5.评价一个好的算法,您是从哪几方面来考虑的? 【大连海事大学 96 二、3 (2分】【中山大学 98 三、1 (5分】

  37. 5. 算法分析(时间复杂度、空间复杂度) 时间复杂度: 数量级的思想 T(n)是问题规模n的函数,当n→∞ ,T(n)的数量级为算法的渐近时间复杂度O(n) 方法:寻找程序中最复杂的程序段的执行数量级 例 1:求两个方阵的乘积 C=A*B MATRIXMLT(float A[n][n],float B[n][n],float C[n][n]) { int i,j,k; for(i=0;i<n;i++) // for(j=0;j<n;j++) //n(n+1) { C[i][j]=0; //n*n for( k=0;k<n;k++) //n*n*(n+1) C[i][j]+=A[i][k]*B[k][j] //n*n*n } } n+1

  38. 例 2: x=1; for (i=1;i<=n;i++) for (j=1;j<=i;j++) for (k=1;k<=j;k++) x++;

  39. 练习19. :写出下面算法中带标号语句的频度。北京邮电大学 1997二(10分) TYPE ar=ARRAY[1..n] OF datatype; PROCEDURE perm ( a: ar; k, n: integer); VAR x: datatype; i:integer; BEGIN (1)IF k=n THEN BEGIN (2)FOR i:=1 TO n DO (3)write (a[i]); writeln; END ELSE BEGIN (4) FOR i:=k TO n DO (5)a[i]:=a[i]+i*i; (6) perm (a, k+1, n); END; END; 设k的初值等于1。 • N • N+1 • N • (n+4)(n-1)/2 • (n+2)(n-1)/2 • n-1

  40. 20分析下面程序段中循环语句的执行次数。 i:=0;s:=0;n:=100; REPEAT i:=i+1; s:=s+10*i; UNTIL NOT((i<n) AND (s<n)); 【北京邮电大学 1998 四、1(5分)】 4(i=4,s=100)

  41. 25.有下列运行时间函数: (1)T1 (n)=1000; (2)T2(n)=n2+1000n; (3)T3(n)=3n3+100n2+n+1; 分别写出相应的大O表示的运算时间。 【吉林工业大学 1999 二(12分)】 • O(1) • O(n2) • O(n3)

  42. 26. 试给出下面两个算法的运算时间。 (1) for i←1 to n do x ← x+1 END (2) for i← 1 to n do for j←1 to n do x← x+1 end end 【中科院自动化研究所 1995 二、2 (6分)】 • O(n) • O(n2)

  43. 常见的时间复杂度,按数量级递增排序: 常数阶 对数阶 线性阶 线性对数阶 平方阶 立方阶 ……… K次方阶 指数阶

  44. 28.将下列函数,按它们在n→∝时的无穷大阶数,从小到大排序。28.将下列函数,按它们在n→∝时的无穷大阶数,从小到大排序。 n, n-n3+7n5, nlogn, 2n/2, n3, logn, n1/2+logn, (3/2)n, ,n!, n2+logn 【中科院计算所 1995(4分) 】 logn, n1/2+logn, n, nlogn, n2+logn , n3, n-n3+7n5, 2n/2, (3/2)n, n!,

  45. 分析算法时间复杂度[例1-3] 问题规模:n 基本操作:++i, s=s+i 假设循环执行m次结束,则 S1=1; S2=1+2=3 S3=1+2+3=6 Sm=m(m+1)/2 m是执行的次数,需要用n表示出来 则: n=m(m+1)/2, m= T(n)=O( ) void fun(int n) { Int i=0;s=0; While(s<n) { ++i; s=s+i; } }

  46. 练习:函数调用 为mergesort(1,n),merge函数的时间复杂度为O(n),下面函数mergesort执行的时间复杂度为多少?P二.2 Void mergesort(int I, int j) { Int m; If(i!=j) {m=(i+j)/2; Mergesort(i,m); Mergesort(m+1,j); Merge(i,j,m); } } 问题规模:n 基本操作merge时间复杂度为O(n),基本操作次数为cn Mergesort基本操作次数设为f(n) F(n)=O(1)n+cnlog2n T(n)=O(nlog2n)

  47. 空间复杂度 • 程序指令的存储空间 • 数据存储空间 • 辅助存储空间 数量级的思想 若算法执行时所需要的辅助空间相对于输入数据量而言是个常数,则称这个算法的辅助空间为O(1)。

  48. 9. 当你为解决某一问题而选择数据结构时,应从哪些方面考虑?【西安电子北京科技大学 2000】 • 通常考虑算法所需要的存储空间量和算法所需要的时间量。 • 后者又涉及到四方面: • 程序运行时所需输入的数据总量 • 对源程序进行编译所需时间 • 计算机执行每条指令所需时间 • 程序中指令重复执行的次数。

  49. 算法基础: • 相关C语言基础 • 数组 • 函数 • 结构体 • typedef声明新类型名 • 指针 • 动态存储分配

More Related