版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第1 1章章 绪绪 论论教学目的教学目的 学习与数据构造有关的根本概念和根本方法。学习与数据构造有关的根本概念和根本方法。重点、难点重点、难点 数据构造逻辑构造、存储构造,笼统数据构造逻辑构造、存储构造,笼统 数据类定数据类定义、实现,算法定义、设计要求、描画工具、复义、实现,算法定义、设计要求、描画工具、复杂度分析。杂度分析。教学方法教学方法 提出问题、分析问题、处理问题提出问题、分析问题、处理问题第第1 1章章 绪绪 论论1.7 1.7 关于学习数据构造关于学习数据构造 l1.11.1 数据构造的根本概念数据构造的根本概念( (定义定义) )l1.2 1.2 数据构造的内容研讨范围数据构
2、造的内容研讨范围l1.31.3 算法设计算法设计l1.41.4 算法描画工具算法描画工具 l1.51.5 对算法作性能评价对算法作性能评价l1.61.6 数据构造与数据构造与C C言语表示言语表示前往1.1 1.1 数据构造的根本概念定义数据构造的根本概念定义数据构造的相关名词:数据Data数据元素Data Element 数据对象Data Object 数据构造Data Structure 数据类型(Data Type) 数据笼统与笼统数据类型数据数据DataData定义: 数据是描画客观事物的数值、字符以及能输入机器且能被处置的各种符号集合。 数据包含整型、实型、布尔型、图象、字符、声音等
3、一切可以输入到计算机中的符号集合。C编译程序源程序源程序.c目的程序目的程序.obj可执行程序可执行程序.exeC链接程序例如对C源程序数据元素数据元素Data ElementData Element定义:定义: 数据元素是组成数据的根本单位数据元素是组成数据的根本单位 ,是数据集合的个体,在计,是数据集合的个体,在计算机中通常作为一个整体进展思索和处置。例如:算机中通常作为一个整体进展思索和处置。例如:. . . . . . 北京1983.11河北女 赵虹玲101 住 址 出生年月 籍 贯性 别 姓 名 学 号 数据元素数据元素数据项数据项数据对象数据对象Data ObjectData Ob
4、ject 定义:定义: 数据对象是性质一样的数据元素的集合,是数据的一数据对象是性质一样的数据元素的集合,是数据的一个子集。个子集。整数集合:N=0,1,2, 无限集字符集合:C=A,B,Z 有限集例如:数据构造数据构造Data StructureData Structure 定义: 数据构造是指相互之间存在一种或多种特定关系的数据元素集合,是带有构造的数据元素的集合,它指的是数据元素之间的相互关系,即数据的组织方式。 例如表构造:. . . . . . 北京1983.11河北女 赵虹玲101 住 址 出生年月 籍 贯性 别 姓 名 学 号 数据构造数据构造Data StructureData
5、 Structure教研室实验室 系处研究机构学校树型构造图构造 1 2 5 4 3数据类型数据类型(Data Type) (Data Type) 定义: 数据类型是一组性质一样的值集合以及定义在这个值集合上的一组操作的总称。如在高级言语中,整型类型的取值范围为:-32768+32767,运算符集合为加、减、乘、除、取模,即+、-、*、/、%。数据类型数据类型(Data Type)(Data Type)高级言语中的数据类型分为两大类:1.原子类型,其值不可分解。如C言语中的规范类型整型、实型、字符型、。2.构造类型,其值是由假设干成分按某种构造组成的,因此是可以分解的,并且它的成分可以是非构造
6、的,也可以是构造的。指针类型属于哪种类型?指针类型属于哪种类型?数据笼统与笼统数据类型数据笼统与笼统数据类型 数据的笼统笼统数据类型(Abstract Data Type) 笼统数据类型实现 ADT的表示与实现面向对象的概念构造化的开发方法与面向对象开发方法不同点 1.2 数据构造的内容数据构造的内容 逻辑构造 存储构造 运算集合 逻辑构造逻辑构造定义: 数据的逻辑构造是指数据元素之间逻辑关系描画。l方式化描画:lData_Structure=D,R其中D是数据元素的有限集,R是D上关系的有限集。l四类根本的构造l 集合构造、线性构造、树型构造、图状构造。集合构造集合构造定义:定义: 构造中的
7、数据元素之间除了同属于一个集合的关构造中的数据元素之间除了同属于一个集合的关系外,无任何其它关系。系外,无任何其它关系。 集合例如:线性构造线性构造定义:定义: 构造中的数据元素之间存在着一对一的线性关系。构造中的数据元素之间存在着一对一的线性关系。 例如:线性表线性表树型构造树型构造定义: 构造中的数据元素之间存在着一对多的层次关系。 例如: 树图状构造或网状构造图状构造或网状构造 定义:定义: 构造中的数据元素之间存在着多对多的恣意关系。构造中的数据元素之间存在着多对多的恣意关系。例如: 图综上所述,数据的逻辑构造可概括为:综上所述,数据的逻辑构造可概括为:线性构造线性构造线性表、栈、队、
8、字符串线性表、栈、队、字符串 数组、广义表数组、广义表逻辑构造逻辑构造非线性构造非线性构造树、图树、图逻辑构造逻辑构造存储构造存储构造 定义: 存储构造又称物理构造是逻辑构造在计算机中存储映象,是逻辑构造在计算机中的实现,它包括数据元素的表示和关系的表示。 l方式化描画:l D要存入机器中,建立一从D的数据元素到存储空间M单元映象S ,DM,即对于每一个d, dD,都有独一的zM使SD=Z, 同时这个映象必需明显或隐含地表达关系R。逻辑构造与存储构造的关系为:逻辑构造与存储构造的关系为:存储构造是逻辑关系的映象与元素本身映象,是数存储构造是逻辑关系的映象与元素本身映象,是数据构造的实现;逻辑构
9、造是数据构造的笼统。据构造的实现;逻辑构造是数据构造的笼统。 数据元素之间关系在计算机中的表示方法:数据元素之间关系在计算机中的表示方法:顺序映象顺序映象 顺序存储构造顺序存储构造 非顺序映象非顺序存储构造非顺序映象非顺序存储构造存储构造存储构造运算集合运算集合例如工资表:编编 号号姓姓 名名性别性别基本工资基本工资工龄工资工龄工资应扣工资应扣工资实发工资实发工资100001100001张爱芬张爱芬女女34534567671451454545303000004514511212100002100002李李 林林 男男 44544590901851856060454500005865865050
10、100003100003刘晓峰刘晓峰 男男 34534500001301300000252500004504500000100004100004赵赵 俊俊 女女 56056090902252259090656500007217218080100005100005孙孙 涛涛 男男 45045060601901908080505000005915918080 100121100121张兴强张兴强 男男 102510259898365365535310010000001291.511291.51数据构造的内容数据构造的内容 综上所述,数据构造的内容可归纳为三个部分,逻辑构造、存储构造和运算集合:按某
11、种逻辑关系组织起来的一批数据,按一定的映象方式把它存放在计算机存贮器中,并在这些数据上定义了一个运算的集合,就叫做数据构造。 1.3 算法算法 算法算法Algorithm定义定义 算法的特性算法的特性 算法设计的要求算法设计的要求 算法算法Algorithm定义定义定义: Algorithm is a finite set of rules which gives a sequence of operation for solving a specific type of problem. 算法是规那么的有限集合,是为处理特定问题而规定的一系列操作。 算法的特性算法的特性1. 有限性:有限步骤
12、之内正常终了,不能构成无穷循环2. 确定性:算法中的每一个步骤必需有确定含义,无二 义性得以实现。 3. 输 入: 有多个或0个输入 4. 输 出: 至少有一个或多个输出。5. 可行性:原那么上能准确进展,操作可经过已实现根本 运算执行有限次而完成。 算法设计的要求算法设计的要求 算法的正确性 算法特征:l 可读性 l 强壮性 l 高效率和低存储量例如要求n个数的最大值问题给出算法如下: max:=0; fori=1 ;imax) max=x; 1.4 算法描画的工具算法描画的工具 概述:算法+数据构造=程序 算法、言语、程序的关系 设计实现算法过程步骤类描画算法的言语选择算法、言语、程序的关
13、系算法、言语、程序的关系1. 算法:描画了数据对象的元素之间的关系包括数据逻辑关系、存贮关系描画。2. 描画算法的工具:算法可用自然言语、框图或高级程序设计言语进展描画。3.程序是算法在计算机中的实现。设计实现算法过程步骤设计实现算法过程步骤1. 找出与求解有关的数据元素之间的关系2. 确定在某一数据对象上所施加运算3. 思索数据元素的存储表示4. 选择描画算法的言语5.设计实现求解的算法,并用程序文语加以描画。类描画算法的言语选择类描画算法的言语选择类言语:类言语是接近于高级言语而又不是严厉的高级言语,类言语是接近于高级言语而又不是严厉的高级言语,具有高级言语的普通语句设备,撇掉言语中的细节
14、,具有高级言语的普通语句设备,撇掉言语中的细节,以便把留意力主要集中在算法处置步骤本身的描画以便把留意力主要集中在算法处置步骤本身的描画上。上。3.赋值语句对C言语作以下描画:1简单赋值 1变量名=表达式 2 变量+, 3 变量- -,2串联赋值变量1=变量2=变量3=变量k=表达式 对C言语作以下描画:4条件赋值变量名=条件表达式?表达式1:表达式2 3成组赋值(,变量变量k k=(=(,2 , ,)k)数组名数组名1 1 下标下标11下标下标2=2=数组名数组名2 2 下标下标11下标下标2 2 4.条件选择语句对C言语作以下描画:if () 语句;if () 语句1; else 语句2;
15、情况语句switch ( case 判别值1: 语句组 1; break; case 判别值2: 语句组 2; break; case 判别值n: 语句组n; break; default: 语句组; break; 对C言语作以下描画:对C言语作以下描画:5.循环语句for 语句语句for (;循环体语句;循环体语句;while 语句语句while ( 循环体语句;循环体语句; 对C言语作以下描画:do while 语句语句do 循环体语句循环体语句 while ( 1.5 对算法作性能评价对算法作性能评价 评价算法的规范: 评价一个算法主要看这个算法所占用机器资源的多少,而这些资源中时间代价
16、与空间代价是两个主要的方面,通常是以算法执行所需的机器时间和所占用的存储空间来判别一个算法的优劣。 性能评价 有关数量关系计算 性能评价定义:定义: 对问题规模与该算法在运转时所占的空间对问题规模与该算法在运转时所占的空间S与所耗费的与所耗费的时间时间T给出一个数量关系的评价。给出一个数量关系的评价。问题规模问题规模N对不同的问题其含义不同:对不同的问题其含义不同: 对矩阵是阶数;对矩阵是阶数; 对多项式运算是多项式项数;对多项式运算是多项式项数; 对图是顶点个数;对图是顶点个数; 对集合运算是集合中元素个数。对集合运算是集合中元素个数。有关数量关系计算有关数量关系计算 数量关系评价表达在时间
17、数量关系评价表达在时间算法在机器中所耗费时间。算法在机器中所耗费时间。数量关系评价表达在空间数量关系评价表达在空间算法在机器中所占存储量。算法在机器中所占存储量。关于算法执行时间关于算法执行时间语句频度语句频度 算法的时间复杂度算法的时间复杂度数据构造中常用的时间复杂度频率计数数据构造中常用的时间复杂度频率计数 最坏时间复杂度最坏时间复杂度 算法的空间复杂度算法的空间复杂度 关于算法执行时间关于算法执行时间定义:定义: 一个算法的执行时间大致上等于其一切语句执行一个算法的执行时间大致上等于其一切语句执行时间的总和,对于语句的执行时间是指该条语句的执时间的总和,对于语句的执行时间是指该条语句的执
18、行次数和执行一次所需时间的乘积。行次数和执行一次所需时间的乘积。l分析:分析:l 不是针对实践执行时间的准确地算出算法执不是针对实践执行时间的准确地算出算法执行详细时间,而是针对算法中语句的执行次数做出行详细时间,而是针对算法中语句的执行次数做出估计,从中得到算法执行时间的信息。估计,从中得到算法执行时间的信息。语句频度语句频度 定义:定义:语句频度是指该语句在一个算法中反复执行的次数。语句频度是指该语句在一个算法中反复执行的次数。例如:例如:两个两个矩阵矩阵相乘相乘算法语句算法语句 对应的语句频度对应的语句频度 1 1forfori=0i=0;i n;i+i n;i+ n n 2 2for
19、for j=0j=0;jn;j+jn;j+ n2 n2 3 cij=0; n2 3 cij=0; n2 4 for (k=0;k n; k+) n3 4 for (k=0;k n; k+) n3 cij=cij+aik cij=cij+aik* *bkj; n3 bkj; n3 总执行次数:总执行次数:Tn=2n3+2n2 +nTn=2n3+2n2 +n算法的时间复杂度算法的时间复杂度 算法的时间复杂度,即是算法的时间量度记做:算法的时间复杂度,即是算法的时间量度记做: T(n)=O(f(n)例如给出例如给出X=X+11x=x+1 ;时间复杂度为;时间复杂度为O(1),称为常量阶;,称为常量阶
20、;2for (i=1; i= n; i+) x=x+1; 时间复杂度为O(n),称为线性阶;3for (i=1; i= n; i+)for (j=1;j= n; j+) x=x+1; 时间复杂度为时间复杂度为O(n2), 称为平方阶。称为平方阶。常用的时间复杂度频率计数常用的时间复杂度频率计数 数据构造中常用的时间复杂度频率计数有7个:O(1)常数型常数型O(n)线性型线性型O(n2)平方型平方型O(n3)立方型立方型O(2n)指数型指数型O(log2n)对数型对数型O(nlog2n)二维型二维型按时间复杂度由小到大陈列的频率表:按时间复杂度由小到大陈列的频率表:常用的时间复杂度频率计数常用的
21、时间复杂度频率计数常用的时间复杂度频率表:常用的时间复杂度频率表:loglog2 2n nn nnlognlog2 2n nn n2 2n n3 32 2n n一般讲:前一般讲:前3种种可实现,后可实现,后3种种虽理论上是可虽理论上是可实现的,实际实现的,实际上只有对上只有对N限制限制在很小范围才在很小范围才有意义,当有意义,当N较较大时,不可能大时,不可能实现。实现。 0 01 10 01 11 12 21 12 22 24 48 84 42 24 48 81616646416163 38 8242464645125122562564 4161664642562565096509665536
22、655365 5323216016010241024327683276821474836482147483648最坏时间复杂度最坏时间复杂度 定义:定义:讨论算法在最坏情况下的时间复杂度,即分析最讨论算法在最坏情况下的时间复杂度,即分析最坏情况下以估计出算法执行时间的上界。坏情况下以估计出算法执行时间的上界。例如冒泡排序算法例如冒泡排序算法void bubble(int a, int length)将将a中整数数组重新排序,到达中整数数组重新排序,到达递增有序递增有序 int i=0, j, temp; int change ; do change=false ; for(j=1;jaj+1)
23、 temp= aj;aj=aj+1;aj+1=temp;change=true; i=i+1 ; while(ilength | change=true )最坏时间复杂度最坏时间复杂度 算法的空间复杂度算法的空间复杂度 定义: 用空间复杂度作为算法所需存储空间的量度, 记做: S(n)=O(f (n) 。1.6 数据构造与数据构造与C言语表示言语表示 1.6.1 数据构造与程序设计的关联性数据构造与程序设计的关联性 问题描画:欲求问题描画:欲求1 1名学生名学生1010次次C C言语程序设计的测试成言语程序设计的测试成果总分与平均分。其中果总分与平均分。其中1010次检验的成果分别为:次检验的
24、成果分别为:8080,8585,7777,5656,6868,8383,9090,9292,8080,9898。 程序例如程序例如1-1:main() int sum,verage; /*总分,平均分*/ int t1,t2,t3,t4,t5,t6,t7,t8,t9,t10; /*10个变量存10次成果*/ t1=80;t2=85;t3=77;t4=56; t5=68; /*分别赋值*/ t6=83;t7=90;t8=92;t9=80;t10=98; sum= t1+t2+t3+t4+t5+t6+t7+t8+t9+t10; /*计算总分*/ average=sum/10; /*计算平均分*/
25、printf(“总分=%dn,sum); printf(“平均分=%dn, average); 根据测试次数与测试成果的关系,采用数组构造存储检验成果,提高了程序的根据测试次数与测试成果的关系,采用数组构造存储检验成果,提高了程序的适用范围。适用范围。main() int sum,erage;int i; int t10 =80,85,77,56,68,83,90,92,80,98 /*分别赋值分别赋值*/ sum=0; /*总分置初值总分置初值*/ for (i=0; i10; i+) sum=sum+ti; average=sum/10; /*计算平均分计算平均分*/ printf(“总分
26、总分=%dn,sum); printf(“平均分平均分=%dn, average); 程序例如程序例如1-2:1.6.2 构造化程序设计与函数的模块化构造化程序设计与函数的模块化 构造化程序设计 :是为使程序具有合理的构造,以保证程序正确性而规定的一套程序设计的方法 。程序设计的本质:算法+数据构造=程序 即“程序是在数据的特定表示方式的根底上,对笼统算法的详细描画。程序构造=控制构造+数据构造 构造化程序设计目的经过设计构造良好的程序,以程序的静态良好构造保证程序动态执行的正确性,使程序易了解、易调试、易维护,以提高软件开发的效率,减少出错率。构造化程序设计的构成单元任何程序都可由顺序、选择
27、、反复三种根本控制构造来组成。构造化程序设计方法 其一:其一:“自顶向下,逐渐求精的设计思想自顶向下,逐渐求精的设计思想 ;其二:;其二:“独独立功能,一个入口,一个出口立功能,一个入口,一个出口“的模块化构造;的模块化构造; 其三:其三:“仅用三种根本控制构造的设计原那么仅用三种根本控制构造的设计原那么 1.6.3 面向对象与笼统数据类型1.1.面向对象的概念:面向对象的概念:面向对象=对象+类+承继+通讯对象:指在运用问题中出现的各种实体、事件、规格阐明等 。类:具有一样属性和效力的对象 承继:是面向对象方法的最有特征的方面。 面向对象程序设计的特点是封装性、承继性和多态性面向对象程序设计
28、的特点是封装性、承继性和多态性 与数据构造亲密相关的是定义在数据构造上的一组操作。 根本操作主要有:根本操作主要有:插入:在数据构造中的指定位置上增添新的数据元素插入:在数据构造中的指定位置上增添新的数据元素 ;删除:删去数据构造中某个指定数据元素删除:删去数据构造中某个指定数据元素 ;更新:改动数据构造中某个元素的值,在概念上等价于删更新:改动数据构造中某个元素的值,在概念上等价于删除和插入操作的组合除和插入操作的组合 ;查找:在数据构造中寻觅满足某个特定要求的数据元素查找:在数据构造中寻觅满足某个特定要求的数据元素的位置和值;的位置和值; 排序:在线性构造中重新安排数据元素之间的逻辑顺排序
29、:在线性构造中重新安排数据元素之间的逻辑顺序关系,使数据元素按值由小到大或由大到小的次序陈列。序关系,使数据元素按值由小到大或由大到小的次序陈列。 构造化与面向对象开发方法的不同点 n构造化的开发方法:是面向过程的开发方法,首先着眼于系统要实现的功能。l面向对象的开发方法:面向对象的开发方法:l首先着眼于运用问题所涉及的对象,包括对象、首先着眼于运用问题所涉及的对象,包括对象、对象属性和要求的操作,从而建立对象构造和为处对象属性和要求的操作,从而建立对象构造和为处理问题需求执行的时间序列。理问题需求执行的时间序列。数学模型数学模型抽象数据模型抽象数据模型数据结构数据结构非形式算法非形式算法伪语
30、言程序伪语言程序可执行程序可执行程序用笼统数据类型的概念来指点问题的求解过程:用笼统数据类型的概念来指点问题的求解过程:2 2笼统数据类型与问题求解方法笼统数据类型与问题求解方法 n定义:n笼统数据类型简称ADT是指基于一类逻辑关系的数据类型以及定义在这个类型之上的一组操作。一个笼统数据类型确定了一个模型,但将模型的实现细节一个笼统数据类型确定了一个模型,但将模型的实现细节隐藏起来;它定义了一组运算,但将运算的实现过程隐藏隐藏起来;它定义了一组运算,但将运算的实现过程隐藏起来。起来。数据的笼统数据的笼统汇编言语中十进制表示的数据98.65、9.6E3等, 它们是二进制数据的笼统; l高级言语中
31、,给出更高一级的数据笼统,如整型、实型、字符型等,l还可以进一步定义更高级的数据笼统,如各种表、队、栈、树、图、窗口、管理器等复杂的笼统数据类型。笼统数据类型笼统数据类型线性表的笼统数据类型的描画:ADT Linear_list数据元素 一切ai属于同一数据对象,i=1,2,n n0;逻辑构造 一切数据元素aii=1,2,n-1存在次序关系 ,ai无前趋,an无后继;操作 设L为Linear_listInitial(L)初始化空线性表;Length(L)求线性表的表长;Get(L,i)取线性表的第i个元素;Insert(L,i,b)在线性表的第i个位置插入元素b;Delete(L,i)删除线性
32、表的第i个元素; 笼统数据类型实现笼统数据类型实现传统的面向过程的程序设计传统的面向过程的程序设计实现的三种方法:l“包、包、“模型的设计方法模型的设计方法l面向对象的程序设计面向对象的程序设计Object Oriented Object Oriented ProgrammingProgramming,简称,简称OOPOOPADT的表示与实现的表示与实现 ADT的定义:ADT 数据对象: 构造关系: 根本操作: ADT 根本操作的定义格式为: (参数表) 操作前提: 操作结果:l关于参数传送:参数表中的参数有值参和变参两种。用规范C言语表示和实现ADT描画时,主要有两个方面: 二、用C言语函数
33、实现各操作。一、经过构造体将int、float等固有类型组合到一同,构成一个构造类型,再用typedef为该类型或该类型指针重新起一个名字。ADT的表示与实现的表示与实现1.6.4 算法描画规范与设计风格算法描画规范与设计风格 1. 算法表示格式与函数模块化 函数前往值类型 函数名方式参数及阐明 内部数听阐明; 执行语句组; /*函数名*/ 算法表示格式1.6.4 算法描画规范与设计风格算法描画规范与设计风格 函数的模块化 1. 算法表示格式与函数模块化 包含文件语句包含文件语句宏定义语句宏定义语句自定义类型语句自定义类型语句一切子函数的原型阐明一切子函数的原型阐明子函数子函数1定义定义.子函
34、数子函数n定义定义 主函数定义主函数定义 2. 算法描画要点 1.6.4 算法描画规范与设计风格算法描画规范与设计风格 加上必要的注释加上必要的注释 注释方式可以用/*字符串*/ 防止函数前往值隐含阐明防止函数前往值隐含阐明 预定义常量和类型预定义常量和类型 # define TRUE 1 # define FALSE 0 # define MAXSIZE 100 # define OK 1 # define ERROR 0防止能够出现的二义性表达防止能够出现的二义性表达 留意不同的退出语句区别留意不同的退出语句区别 return 或或return:用于函数终了。:用于函数终了。break语句
35、:可用在循环语句或语句:可用在循环语句或switch语句中终了循环过程或语句中终了循环过程或跳出情况语句。跳出情况语句。continue语句:可用在循环语句中终了本次循环过程,进入语句:可用在循环语句中终了本次循环过程,进入下一次循环过程。下一次循环过程。 exit语句:表示出现异常情况时,控制退出函数。语句:表示出现异常情况时,控制退出函数。 运用有意义的函数名与变量名运用有意义的函数名与变量名 2. 算法描画要点算法描画要点 1.6.4 算法描画规范与设计风格算法描画规范与设计风格 简化输入、输出表述简化输入、输出表述 规范多分支转向规范多分支转向 3. 与参数传送的相关技术 1.6.4
36、算法描画规范与设计风格算法描画规范与设计风格 变量的作用域变量的作用域 全局变量:程序中一切函数都可以访问的量 部分变量:只能在该函数中访问的量。 参数传送方式参数传送方式 参数传送是函数之间进展信息通讯的重要渠道。其参数传送的主要方式有传值和传地址两类。函数参数表中的参数有两种:第一种参数只为操作提供待处置数据,又称值参;第二种参数既能为操作提供待处置数据,又能前往操作结果,也称变量参数。 #include viod swap1(int a,int b) int c;c=a; a=b; b=c; printf(“swap1中的a= %d,b=%d,a,b); viod swap2(int *
37、a,int *b) int c;c=*a, *a=*b, *b=c; 关于参数传送例如源程序:关于参数传送例如源程序:void main() int x=100,y=800; swap1(x,y); /*调用函数swap1()*/printf(“n调用swap1后x= %d,y=%d,x,y); /*输出调用swap1后的数据*/x=100;y=800;swap2(&x,&y); /*调用函数swap2()*/ printf(“n调用swap2后x=%d,y=%d,x,y); /*输出调用swap2后的数据*/ 关于参数传送例如源程序:关于参数传送例如源程序:4. 函数结果的带
38、出方式函数结果的带出方式 1.6.4 算法描画规范与设计风格算法描画规范与设计风格 三种带出方式三种带出方式: :全程量、函数前往值、传址参数全程量、函数前往值、传址参数假设函数结果需求带出多个值,该怎样实现假设函数结果需求带出多个值,该怎样实现? ?可以采用全可以采用全局变量方式带出,经过地址传送带出数组方式、构造局变量方式带出,经过地址传送带出数组方式、构造体方式、指针方式两类方式之一来实现。体方式、指针方式两类方式之一来实现。 经过参数表的参数传送是一种参数显式传送方式,而经过经过参数表的参数传送是一种参数显式传送方式,而经过全局变量是一种隐式参数传送,一个函数中对全局变量的全局变量是一
39、种隐式参数传送,一个函数中对全局变量的改动会影响其它程序的调用,运用全局变量必需留意这个改动会影响其它程序的调用,运用全局变量必需留意这个问题。问题。 全局变量方式:int MIN; /* 全局变量 */ int fun1(int a, int n) /*经过函数return前往最大值,经过全局变量MIN带回最小值*/ int i,max; max=MIN=a0; /给最大值最小值赋初值 for (i=0;imax) max=ai; if (aiMIN) MIN=ai; return(max);一个全局变量方式带出的例子一个全局变量方式带出的例子 int *fun2(int a,int n)/
40、*将最大、最小值放到数组b中,经过return前往*/ static int b2; b0=b1=a0; /给最大值最小值赋初值int i; for (i=1;ib0)b0=ai;if (aimax=p-min=a0; /给最大值最小值赋初值for(i=1;ip-max) p-max=ai;if (aimin)p-min=ai;return(p);构造体方式带出的例子构造体方式带出的例子Data fun4(int a,int n) /*将最大、最小值放到构造体p中,经过构造体p带回前往值*/Data p;int i;p.max=p.min=a0; /给最大值最小值赋初值for(i=1;ip.max) p.max=ai;if (aip.min)p.min=ai;return(p);指针方式带出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度政法干警高频难、易错点题带答案详解(巩固)
- 2024-2025学年度注册电气工程师测试卷含答案详解(轻巧夺冠)
- 2024-2025学年冶金工业技能鉴定试卷附答案详解【考试直接用】
- 2024-2025学年公务员考试《常识》考试彩蛋押题附答案详解(轻巧夺冠)
- 2024-2025学年度咨询工程师试卷及完整答案详解【有一套】
- 2024-2025学年度电工考试综合练习及参考答案详解(B卷)
- 2024-2025学年度注册电气工程师能力提升B卷题库附完整答案详解【夺冠】
- 2024-2025学年冶金工业技能鉴定检测卷(典优)附答案详解
- 2024-2025学年度医学检验(士)考试黑钻押题附参考答案详解(模拟题)
- 2024-2025学年度护士资格证常考点试卷A4版附答案详解
- OQC送检单表格模板
- 钢丝绳验收表
- 高中语文-五代史伶官传序教学设计学情分析教材分析课后反思
- 从业人员卫生知识培训
- 第二章粮油贮藏加工的原理
- GB/T 40822-2021道路车辆统一的诊断服务
- GCP培训教学讲解课件
- 《材料物理性能》配套教学课件
- 《客房服务与管理》第一章课件
- 菌物学绪论课件
- 文化人类学概论课件
评论
0/150
提交评论