第一章 绪论
1.1 简述下列术语:数据,数据元素,数据对象,数据结构,存储结构,数据类型和抽象数据类型
-
数据(data element):指所有能够输入到计算机中并被计算机程序处理的符号集合
-
数据对象(data object):性质相同的数据元素的集合,是数据的一个子集
-
数据结构(data structure):相互之间存在一种或多种关系的数据元素的集合。即包括数据元素的集合和数据元素之间的关系集合
-
存储结构:数据结构在计算机上的表示(也称映像)叫做物理结构。又称存储结构
-
数据类型(data type):是一个“值”的集合和定义在此集合上的“一组操作”的总称,例如int类型
-
抽象数据类型(abstract data type,简称ADT):是指一个数学模型以及定义在此数学模型上的一组操作,例如,各种高级程序设计语言中都有“整数”类型,尽管它们在不同处理器上实现的方法不同,但对程序员而言是“相同的”,即数学特性相同。从“数学抽象”的角度看,可称它为一个“抽象数据类型”。
1.2 试着描述数据结构(data structure)和抽象数据类型(ADT,abstract data type)的概念与程序设计语言中数据类型概念的区别。
- 简单的说,数据结构定义了一组按照某些关系结合在一起的数组元素。而数据类型不仅定义了一组带有结构的数据元素,而且还在其上定义了一组操作
1.3 设有数据结构(D,R),其中
D={d1,d2,d3,d4} R={r}, r={(d1,d2), (d2,d3), (d3,d4)}
试着按图论中图的惯例画出其逻辑结构图。
1.4 试着仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子,分母均为自然数且分母不为零的分数)
-
ADT Complex{ 数据类型:D={r,i|r,i为实数} 数据关系:S={<r,i>} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C,实部为re, 虚部为im。 DestroyComplex(&C) 初始条件:复数C存在 操作结果:销毁复数C Get(C,k,&e) 初始条件:复数C存在,1<=k<=2 操作结果:用e返回C的第K元的值 Put(&C,k,e) 初始条件:复数C存在 操作结果:将C的第k元改成e IsAscending(C) 初始条件:复数C存在 操作结果:如果复数C的两个元素按升序排序,则返回1,否则返回0 IsDesending(C) 初始条件:复数C存在 操作结果:如果复数C的两个元素按降序排序,则返回1,否则返回0 Max(C,&e) 初始条件:复数C存在 操作结果:用e返回复数C中两个元素值较大的一个 Min(C,&e) 初始条件:复数C存在 操作结果:用e返回复数中两个元素值较小的一个 }ADT Complex ADT RationalNumber{ 数据对象:D={s,m|s,m为自然数,且m!=0} 数据关系: S={<s,m>} 基本操作: ...... }ADT RationalNumber
1.5 试着画出下列程序段等价的框图
(1) product=1; i=1;
while(i<=n){
product*=i;
i++;
}
(2) i=0;
do{
i++;
}while((i!=n)&&(a[i]!=x));
(3) switch{
case x<y: z=y-x;break;
case x==y: z=abs(x*y);break;//abs()为取绝对值函数
default:z=(x-y)/abs(x)*abs(y);
}
1.6 在程序设计中,常用下列三种不同的出错处理方式:
1. 用exit语句终止执行并报告错误
-
以函数的返回值区分正确返回还是错误返回
-
设置一个整形变量的函数参数,以区别正确返回或某种错误返回
讨论这三种方法各自的优缺点
- 1.exit常用于异常错误处理,它可以强行中断程序的执行,返回操作系统
- 2.以函数的返回值判断正确与否常用于子程序的测试,便于实现程序的局部控制
- 3.用整形函数进行错误处理的优点就是可以给出出错类型,便于迅速确定错误