欢迎来到天天文库
浏览记录
ID:56249039
大小:632.58 KB
页数:148页
时间:2020-03-24
《数据结构题集答案-严蔚敏编著.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第1章绪论1.3设有数据结构(DR)其中 试按图论中图的画法惯例画出其逻辑结构图 解: 1.4试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)解:ADTComplex{数据对象:D={ri
2、ri为实数}数据关系:R={}基本操作:InitComplex(&Creim)操作结果:构造一个复数C其实部和虚部分别为re和imDestroyCmoplex(&C)操作结果:销毁复数CGet(Ck&e)操作结果:用e返回复数C的第k元的值Put(&Cke)操作结果:改变复数C的第k元的值为eIsAscending(C)
3、操作结果:如果复数C的两个元素按升序排列则返回1否则返回0IsDescending(C)操作结果:如果复数C的两个元素按降序排列则返回1否则返回0Max(C&e)操作结果:用e返回复数C的两个元素中值较大的一个Min(C&e)操作结果:用e返回复数C的两个元素中值较小的一个}ADTComplexADTRationalNumber{数据对象:D={sm
4、sm为自然数且m不为0}数据关系:R={}基本操作:InitRationalNumber(&Rsm)操作结果:构造一个有理数R其分子和分母分别为s和mDestroyRationalNumber(&R)操作结果:销毁有理数RGet(R
5、k&e)操作结果:用e返回有理数R的第k元的值Put(&Rke)操作结果:改变有理数R的第k元的值为eIsAscending(R)操作结果:若有理数R的两个元素按升序排列则返回1否则返回0IsDescending(R)操作结果:若有理数R的两个元素按降序排列则返回1否则返回0Max(R&e)操作结果:用e返回有理数R的两个元素中值较大的一个Min(R&e)操作结果:用e返回有理数R的两个元素中值较小的一个}ADTRationalNumber1.5试画出与下列程序段等价的框图 (1)product=1;i=1; while(i<=n){ product*=i; i++; } (
6、2)i=0; do{ i++; }while((i!=n)&&(a[i]!=x)); (3)switch{ casex7、2)以函数的返回值判断正确与否常用于子程序的测试便于实现程序的局部控制(3)用整型函数进行错误处理的优点是可以给出错误类型便于迅速确定错误1.7在程序设计中可采用下列三种方法实现输出和输入: (1)通过scanf和printf语句; (2)通过函数的参数显式传递; (3)通过全局变量隐式传递试讨论这三种方法的优缺点 解:(1)用scanf和printf直接进行输入输出的好处是形象、直观但缺点是需要对其进行格式控制较为烦琐如果出现错误则会引起整个系统的崩溃(2)通过函数的参数传递进行输入输出便于实现信息的隐蔽减少出错的可能(3)通过全局变量的隐式传递进行输入输出最为方便只需修改变量8、的值即可但过多的全局变量使程序的维护较为困难1.8设n为正整数试确定下列各程序段中前置以记号@的语句的频度: (1)i=1;k=0; while(i<=n-1){ @k+=10*i; i++; } (2)i=1;k=0; do{ @k+=10*i; i++; }while(i<=n-1); (3)i=1;k=0; while(i<=n-1){i++; @k+=10*i; } (4)k=0; for(i=1;i<=n;i++){ for(j=i;j<=n;j++) @k++; } (5)for(i=1;i<=n;i++){ for(j=1;j<=i9、;j++){ for(k=1;k<=j;k++) @x+=delta; } (6)i=1;j=0; while(i+j<=n){@if(i>j)j++; elsei++; } (7)x=n;y=0;//n是不小于1的常数 while(x>=(y+1)*(y+1)){ @y++; } (8)x=91;y=100; while(y>0){ @if(x>100){x-=10;y--;} elsex++; }
7、2)以函数的返回值判断正确与否常用于子程序的测试便于实现程序的局部控制(3)用整型函数进行错误处理的优点是可以给出错误类型便于迅速确定错误1.7在程序设计中可采用下列三种方法实现输出和输入: (1)通过scanf和printf语句; (2)通过函数的参数显式传递; (3)通过全局变量隐式传递试讨论这三种方法的优缺点 解:(1)用scanf和printf直接进行输入输出的好处是形象、直观但缺点是需要对其进行格式控制较为烦琐如果出现错误则会引起整个系统的崩溃(2)通过函数的参数传递进行输入输出便于实现信息的隐蔽减少出错的可能(3)通过全局变量的隐式传递进行输入输出最为方便只需修改变量
8、的值即可但过多的全局变量使程序的维护较为困难1.8设n为正整数试确定下列各程序段中前置以记号@的语句的频度: (1)i=1;k=0; while(i<=n-1){ @k+=10*i; i++; } (2)i=1;k=0; do{ @k+=10*i; i++; }while(i<=n-1); (3)i=1;k=0; while(i<=n-1){i++; @k+=10*i; } (4)k=0; for(i=1;i<=n;i++){ for(j=i;j<=n;j++) @k++; } (5)for(i=1;i<=n;i++){ for(j=1;j<=i
9、;j++){ for(k=1;k<=j;k++) @x+=delta; } (6)i=1;j=0; while(i+j<=n){@if(i>j)j++; elsei++; } (7)x=n;y=0;//n是不小于1的常数 while(x>=(y+1)*(y+1)){ @y++; } (8)x=91;y=100; while(y>0){ @if(x>100){x-=10;y--;} elsex++; }
此文档下载收益归作者所有