文档介绍:严蔚敏数据结构C语言版答案详解
第1章绪论
:数据,数据元素、数据对象、数据结构、存储结构、数据种类和抽象数据种类。
解:数据是对客观事物的符号表示。在止履行并报告错误;
以函数的返回值区别正确返回或错误返回;
设置一个整型变量的函数参数以区别正确返回或某种错误返回。试议论这三种方法各自的优缺点。
解:(1)exit常用于异样错误办理,它能够强行中止程序的履行,返回操作系统。
以函数的返回值判断正确与否常用于子程序的测试,便于实现程序的局部控制。
用整型函数进行错误办理的优点是能够给犯错误种类,便于快速确定错误。
,可采用下列三种方法实现输出和输入:
(1)经过scanf和printf语句;
经过函数的参数显式传达;
经过全局变量隐式传达。
试议论这三种方法的优缺点。
解:(1)用scanf和printf直接进行输入输出的利处是形象、直观,但缺点是需要对其进行格式控制,
较为烦杂,如果出现错误,则会惹起整个系统的崩溃。
经过函数的参数传达进行输入输出,便于实现信息的隐蔽,减少犯错的可能。
经过全局变量的隐式传达进行输入输出最为方便,只要改正变量的值即可,但过多的全局变量使程序的维护较为困难。
。试确定下列各程序段中前置以记号@的语句的频度:
i=1;k=0;while(i<=n-1){
k+=10*i;i++;
}
i=1;k=0;do{
k+=10*i;i++;
}while(i<=n-1);
i=1;k=0;while(i<=n-1){i++;
k+=10*i;
}
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;j++){
for(k=1;k<=j;k++)
***@x+=delta;
}
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++;
}
x=91;y=100;while(y>0){
if(x>100){x-=10;y--;}elsex++;
}
解:(1)n-1
n-1
n-1
(4)n+(n-1)+(n-2)+...+1=
n(n
1)
2
(5)1+(1+2)+(1+2+3)+...+(1+2+3+...+n)=
ni(i
1)
2
i
1
=
1n
i(i
1)
1n
(i2
i)
1n
i2
1n
i
2i1
2i1
2i1
2i1
1
1
1
(
1)(2
3)
n(n
1)(2n
1)
n(n
1)
=
12
4
12
n
n向下取整
1100
假定n为2的乘幂,并且n>2,试求下列算法的时间复杂度及变量
intTime(intn){
count=0;x=2;
while(x<n/2){
x*=2;count++;
count
的值(以
n的函数形式表示)。
}
returncount;
}
解:o(log2n)
count=
log2
n
2
,其时间复杂度分别为
O2n
和On10
,假定现实计算机可连续
运算的时间为
107
秒(100多天),又每秒可履行基本操作(根据这些操作来估算算法时间复杂度)
105
次。
试问在此条件下,
这两个算法可解问题的规模
(即