数据结构实用教程第三版课后答案.docx

上传人:b****3 文档编号:1147813 上传时间:2022-10-17 格式:DOCX 页数:119 大小:58.23KB
下载 相关 举报
数据结构实用教程第三版课后答案.docx_第1页
第1页 / 共119页
数据结构实用教程第三版课后答案.docx_第2页
第2页 / 共119页
数据结构实用教程第三版课后答案.docx_第3页
第3页 / 共119页
数据结构实用教程第三版课后答案.docx_第4页
第4页 / 共119页
数据结构实用教程第三版课后答案.docx_第5页
第5页 / 共119页
点击查看更多>>
下载资源
资源描述

数据结构实用教程第三版课后答案.docx

《数据结构实用教程第三版课后答案.docx》由会员分享,可在线阅读,更多相关《数据结构实用教程第三版课后答案.docx(119页珍藏版)》请在冰豆网上搜索。

数据结构实用教程第三版课后答案.docx

数据结构实用教程第三版课后答案

数据结构实用教程(第三版)课后答案

file:

///D|/-------------------上架商品---------------/数据结构实用教程(第三版)课后答案(徐孝凯著)清华大学出版社/第一章绪论.txt

第一章绪习题一

一、单选题

1.一个数组元数a[i]与(A)的表示等价。

A*(a+i)Ba+iC*a+iD&a+i

2.对于两个函数,若函数名相同,但只是(C)不同则不是重载函数。

A参数类型B参数个数C函数类型

3.若需要利用形参直接访问实参,则应把形参变量说明为(B)参数。

A指针B引用C值

4.下面程序段的复杂度为(C)。

for(inti=0;i

for(intj=0;j

a[i][j]=i*j;

AO(m2)BO(n2)CO(m*n)DO(m+n)

5.执行下面程序段时,执行S语句的次数为(D)。

for(inti=1;i<=n;i++)

for(intj=1;j<=i;j++)

S;

An2Bn2/2Cn(n+1)Dn(n+1)/2

6.下面算法的时间复杂度为(B)。

intf(unsignedintn){

if(n==0||n==1)return1;

Elsereturnn*f(n-1);

}

AO

(1)BO(n)CO(n2)DO(n!

二、填空题

1.数据的逻辑结构被除数分为集合结构、线性结构、树型结构和图形结构四种。

2.数据的存储结构被分为顺序结构、链接结构、索引结构和散列结构四种。

3.在线性结构、树型结构和图形结构中,前驱和后继结点之间分别存在着1对1、1对N和M对N的关系。

4.一种抽象数据类型包括数据和操作两个部分。

5.当一个形参类型的长度较大时,应最好说明为引用,以节省参数值的传输时间和存储参数的空间。

6.当需要用一个形参访问对应的实参时,则该形参应说明为引用。

7.在函数中对引用形参的修改就是对相应实参的修改,对值(或赋值)形参的修改只局限在该

函数的内部,不会反映到对应的实参上。

file:

///D|/-------------------上架商品------...教程(第二版)课后答案(徐孝凯著)清华大学出版社/第一章绪论.txt(第1/10页)[2010-3-1622:

06:

17]

file:

///D|/-------------------上架商品---------------/数据结构实用教程(第二版)课后答案(徐孝凯著)清华大学出版社/第一章绪论.txt

8.当需要进行标准I/O操作时,则应在程序文件中包含iostream.h头文件,当需要进行文件I/O操作时,

则应在程序文件中包含fstream.h头文件。

9.在包含有stdlib.h头文件的程序文件中,使用rand()%21能够产生0-20之间的一个随机数。

10.一个记录r理论上占有的存储空间的大小等于所有域的长度之和,实际上占有的存储空间的大小即

记录长度为sizeof(r)。

11.一个数组a所占有的存储空间的大小即数组长度为sizeof(a),下标为i的元数a[i]的存储地址为a+1,

或者为(char*)a+i*sizeof(a[i])。

12.函数重载要求参数类型、参数个数或排列顺序有所不同。

13.对于双目操作符,其重载函数带有2个参数,其中至少有一个为用户自定义

的类型。

14.若对象ra和rb中至少有一个属于用户定义的类型,则执行ra==rb时,需要调用等于

号(==)重载函数,该函数第一个参数应与ra,的类型相同,第二个参数应与

rb的类型相同。

15.从一维数组a[n]中顺序查找出一个最大值元素的时间复杂度为O(n),输出一个二维

数组b[m][n]中所有元素值的时间复杂度为O(m*n)。

16.在下面程序段中,s=s+p语句的执行次数为n,p*=j语句的执行次数为n(n+1)/2,该

程序段的时间复杂度为O(n2)。

inti=0,s=0;

while(++i<=n){

intp=1;

for(intj=1;j<=i;j++)P*=j;

s=s+p;

}

17.一个算法的时间复杂度为(3n2+2nlog2n+4n-7)/(5n),其数量级表示为O(n)。

18.从一个数组a[7]中顺序查找元素时,假定查找第一个元素a[0]的概率为1/3,查找第二

个元素a[1]的概率为1/4,查找其余元素的概率均相同,则在查找成功时同元素的平均比

较次数为35/12。

三、普通题

1.有下列几种用二元组表示的数据结构,试画出它们分别对应的图形表示(当出现多个关系时,

对每个关系画出相应的结构图),并指出它们分别属于何种结构。

⑴A=(K,R)其中

K={a1,a2,a3...,an}

R={}

⑵B=(K,R)其中

file:

///D|/-------------------上架商品------...教程(第二版)课后答案(徐孝凯著)清华大学出版社/第一章绪论.txt(第2/10页)[2010-3-1622:

06:

17]

file:

///D|/-------------------上架商品---------------/数据结构实用教程(第二版)课后答案(徐孝凯著)清华大学出版社/第一章绪论.txt

K={a,b,c,d,e,f,g,h}

R={r}

r={,,,,,,}

⑶C=(K,R)其中

K={a,b,c,d,f,g,h}

R={r}

r={,,,,,,}

⑷D=(K,R)其中

K={1,2,3,4,5,6}

R={r}

r={(1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)}

⑸E=(K,R)其中

K={48,25,64,57,82,36,75,43}

R={r1,r2,r3}

r1={<48,25>,<25,64>,<64,57>,<57,82>,<82,36>,<36,75>,<75,43>}

r2={<48,25>,<48,64>,<64,57>,<64,82>,<25,36>,<82,75>,<36,43>}

r3={<25,36>,<36,43>,<43,48>,<48,57>,<57,64>,<64,75>,<75,82>}

解:

⑴是集合结构;⑵是线性结构;⑶⑷是树型结构;⑸散列结构。

只作为参考。

2.设计二次多项式ax2+bx+c的一种抽象数据类型,假定起名为QIAdratic,

该类型的数据部分分为三个系数项a、b和c,操作部分为:

(请写出下面每一个

操作的具体实现)。

⑴初始化数据成员ab和c(假定用记录类型Quadratie定义成员),每个数据成

员的默认值为0。

QuadraticInitQuadratic(floataa=0,floatbb=0,floatcc=0);

解:

QuadraticInitQuadratic(floataa,floatbb,floatcc)

{

Quadraticq;

q.a=aa;

q.b=bb;

q.c=cc;

returnq;

}

⑵做两个多项式加法,即使对应的系数相加,并返回相加的结果。

QuadraticAdd(Quadraticq1,Quadraticq2);

解:

QuadraticAdd(Quadraticq1,Quadraticq2);

{

Quadraticq;

q.a=q1.a+q2.a;

q.b=q1.b+q2.b;

q.c=q1.c+q2.c;

file:

///D|/-------------------上架商品------...教程(第二版)课后答案(徐孝凯著)清华大学出版社/第一章绪论.txt(第3/10页)[2010-3-1622:

06:

17]

file:

///D|/-------------------上架商品---------------/数据结构实用教程(第二版)课后答案(徐孝凯著)清华大学出版社/第一章绪论.txt

returnq;

}

⑶根据给定x的值计算多项式的值。

floatEval(Quadraticq,floatx);

解:

floatEval(Quadraticq,floatx)

{

return(q.a*x*x+q.b*x+q.c);

}

⑷计算方程ax2+bx+c=0的两个实数根,对于有实根、无实根和不是实根方程

(即a==0)这三种情况要返回不同的整数值,以便于工作调用函数做不同的处理。

intRoot(Quadraticq,float&r1,float&r2);

解:

intRoot(Quadraticq,float&r1,float&r2)

{

if(q.a==0)return-1;

floatx=q.b*q.b-4*q.a*q.c;

if(x>=0){

r1=(float)(-q.b+sqrt(x))/(2*q.a);

r2=(float)(-q.b-sqrt(x))/(2*q.a);

return1;

}

else

return0;

}

⑸按照ax**2+bx+c的格式(x2用x**2表示)输出二次多项式,在输出时要注意

去掉系数为0的项,并且当b和c的值为负时,其前不能出现加号。

voidPrint(Quadraticq)

解:

voidPrint(Quadraticq)

{

if(q.a)cout<

if(q.b)

if(q.b>0)

cout<<"+"<

else

cout<

if(q.c)

if(q.c>0)

cout<<"+"<

else

cout<

cout<

}

file:

///D|/-------------------上架商品------...教程(第二版)课后答案(徐孝凯著)清华大学出版社/第一章绪论.txt(第4/10页)[2010-3-1622:

06:

17]

file:

///D|/-------------------上架商品---------------/数据结构实用教程(第二版)课后答案(徐孝凯著)清华大学出版社/第一章绪论.txt

3.用c++函数描述下列每一个算法,并分别求出它们的时间复杂度。

⑴比较同一简单类型的两个数据x1和x2的大小,对于x1>x2,x1=x2和x1

情况分别返回'>''='和'<'字符。

假定简单类型用SimpleType表示,它可通过typedef

语句定义为任一简单类型。

解:

charcompare(SimpleTypex1,SimpleTypex2)

{

if(x1>

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1