严蔚敏数据结构题集(C语言版)完整答案.doc

上传人:wj 文档编号:677850 上传时间:2023-04-29 格式:DOC 页数:114 大小:906KB
下载 相关 举报
严蔚敏数据结构题集(C语言版)完整答案.doc_第1页
第1页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第2页
第2页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第3页
第3页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第4页
第4页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第5页
第5页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第6页
第6页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第7页
第7页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第8页
第8页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第9页
第9页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第10页
第10页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第11页
第11页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第12页
第12页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第13页
第13页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第14页
第14页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第15页
第15页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第16页
第16页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第17页
第17页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第18页
第18页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第19页
第19页 / 共114页
严蔚敏数据结构题集(C语言版)完整答案.doc_第20页
第20页 / 共114页
亲,该文档总共114页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

严蔚敏数据结构题集(C语言版)完整答案.doc

《严蔚敏数据结构题集(C语言版)完整答案.doc》由会员分享,可在线阅读,更多相关《严蔚敏数据结构题集(C语言版)完整答案.doc(114页珍藏版)》请在冰点文库上搜索。

严蔚敏数据结构题集(C语言版)完整答案.doc

Wewillcontinuetoimprovethecompany'sinternalcontrolsystem,andsteadyimprovementinabilitytomanageandcontrol,optimizebusinessprocesses,toensuresmoothprocesses,responsibilitiesinplace;tofurtherstrengtheninternalcontrols,playacontrolpostindependentoversightroleofevaluationcomplyingwiththird-partyresponsibility;toactivelymakeuseofinternalaudittoolsdetectpotentialmanagement,streamline,standardizerelatedtransactions,strengtheningoperationsinaccordancewithlaw.Deepeningtheinformationmanagementtoensurefullcommunication"zeroresistance".  ToconstantlyperfectERP,andBFS++,andPI,andMIS,andSCM,informationsystembasedconstruction,fullintegrationinformationsystem,achievedinformationresourcesshared;toexpandPortalsystemapplicationofbreadthanddepth,playinformationsystemonenterpriseofAssistantrole;toperfectdailyrunmaintenanceoperationofrecords,promoteproblemreasonsanalysisandsystemhandover;tostrengtheningBFS++,andERP,andSCM,technologyapplicationoftraining,improveemployeesapplicationinformationsystemofcapacityandlevel.Humanisticcaretoensure"zero."  TostrengtheningHumanitiescare,continuestofostercompanywindclear,andgasare,andheartShunofcultureatmosphere;strengtheninglovehelpedtrapped,caredifficultemployees;carriedoutstyleactivities,richemployeeslife;strengtheninghealthandlabourprotection,organizationcareerhealthmedical,controlcareeragainst;continuestoimplementationpsychologicalwarningpreventionsystem,trainingemployeeshealthofcharacter,andstableofmoodandenterprisingofattitude,createdfriendlyfraternityofHumanitiesenvironment.Tostrengthenriskmanagement,ensurethatthebusinessof"zerorisk".Tostrengthenedbusinessplansmanagement,willbusinessbusinessplanscovertoalllevel,ensurethebusinesscancontrolincontrol;tocloseconcernfinancial,andcoalelectriclinkage,andenergy-savingscheduling,nationalpolicytrends,strengtheningtrack,activeshould;toimplementationState-ownedassetsmethod,furtherspecificationbusinessfinancialmanagement;toperfectrisktubecontrolsystem,achievedriskrecognition,andmeasure,andassessment,andreport,andcontrolfeedbackofclosedringmanagement,improveriskpreventioncapacity.  Tofurtherstandardizetrading,andstrivetoachieve"accordingtolaw,standardizeandfair."Innovationofperformancemanagement,toensurethatpotentialemployees"zerofly".Tostrengthenperformancemanagement,processcontrol,enhanceemployeeevaluationandlevelsofeffectivecommunicationtoimproveperformancemanagement.Tofurtherquantifyandrefineemployeestandards...Work,fullplayparty,andbranch,andmembersin"fivetypeEnterprise"constructionintheofcorerole,andfightingfortressroleandpioneermodelrole;tocontinuestostrengthening"fourgood"leadershipconstruction,fullplaylevelscadresinenterprisedevelopmentinthe

严蔚敏数据结构C语言版答案详解

第1章绪论

1.1简述下列术语:

数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:

数据是对客观事物的符号表示。

在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。

是对一般数据类型的扩展。

1.2试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:

抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。

一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。

抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。

在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。

1.3设有数据结构(D,R),其中

,,

试按图论中图的画法惯例画出其逻辑结构图。

解:

1.4试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

解:

ADTComplex{

数据对象:

D={r,i|r,i为实数}

数据关系:

R={}

基本操作:

InitComplex(&C,re,im)

操作结果:

构造一个复数C,其实部和虚部分别为re和im

DestroyCmoplex(&C)

操作结果:

销毁复数C

Get(C,k,&e)

操作结果:

用e返回复数C的第k元的值

Put(&C,k,e)

操作结果:

改变复数C的第k元的值为e

IsAscending(C)

操作结果:

如果复数C的两个元素按升序排列,则返回1,否则返回0

IsDescending(C)

操作结果:

如果复数C的两个元素按降序排列,则返回1,否则返回0

Max(C,&e)

操作结果:

用e返回复数C的两个元素中值较大的一个

Min(C,&e)

操作结果:

用e返回复数C的两个元素中值较小的一个

}ADTComplex

ADTRationalNumber{

数据对象:

D={s,m|s,m为自然数,且m不为0}

数据关系:

R={}

基本操作:

InitRationalNumber(&R,s,m)

操作结果:

构造一个有理数R,其分子和分母分别为s和m

DestroyRationalNumber(&R)

操作结果:

销毁有理数R

Get(R,k,&e)

操作结果:

用e返回有理数R的第k元的值

Put(&R,k,e)

操作结果:

改变有理数R的第k元的值为e

IsAscending(R)

操作结果:

若有理数R的两个元素按升序排列,则返回1,否则返回0

IsDescending(R)

操作结果:

若有理数R的两个元素按降序排列,则返回1,否则返回0

Max(R,&e)

操作结果:

用e返回有理数R的两个元素中值较大的一个

Min(R,&e)

操作结果:

用e返回有理数R的两个元素中值较小的一个

}ADTRationalNumber

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{

casex

z=y-x;break;

casex=y:

z=abs(x*y);break;

default:

z=(x-y)/abs(x)*abs(y);

}

1.6在程序设计中,常用下列三种不同的出错处理方式:

(1)用exit语句终止执行并报告错误;

(2)以函数的返回值区别正确返回或错误返回;

(3)设置一个整型变量的函数参数以区别正确返回或某种错误返回。

试讨论这三种方法各自的优缺点。

解:

(1)exit常用于异常错误处理,它可以强行中断程序的执行,返回操作系统。

(2)以函数的返回值判断正确与否常用于子程序的测试,便于实现程序的局部控制。

(3)用整型函数进行错误处理的优点是可以给出错误类型,便于迅速确定错误。

1.7在程序设计中,可采用下列三种方法实现输出和输入:

(1)通过scanf和printf语句;

(2)通过函数的参数显式传递;

(3)通过全局变量隐式传递。

试讨论这三种方法的优缺点。

解:

(1)用scanf和printf直接进行输入输出的好处是形象、直观,但缺点是需要对其进行格式控制,较为烦琐,如果出现错误,则会引起整个系统的崩溃。

(2)通过函数的参数传递进行输入输出,便于实现信息的隐蔽,减少出错的可能。

(3)通过全局变量的隐式传递进行输入输出最为方便,只需修改变量的值即可,但过多的全局变量使程序的维护较为困难。

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;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++;

}

解:

(1)n-1

(2)n-1

(3)n-1

(4)n+(n-1)+(n-2)+...+1=

(5)1+(1+2)+(1+2+3)+...+(1+2+3+...+n)=

=

=

(6)n

(7)向下取整

(8)1100

1.9假设n为2的乘幂,并且n>2,试求下列算法的时间复杂度及变量count的值(以n的函数形式表示)。

intTime(intn){

count=0; x=2;

while(x

x*=2; count++;

}

returncount;

}

解:

count=

1.11已知有实现同一功能的两个算法,其时间复杂度分别为和,假设现实计算机可连续运算的时间为秒(100多天),又每秒可执行基本操作(根据这些操作来估算算法时间复杂度)次。

试问在此条件下,这两个算法可解问题的规模(即n值的范围)各为多少?

哪个算法更适宜?

请说明理由。

解:

n=40

n=16

则对于同样的循环次数n,在这个规模下,第二种算法所花费的代价要大得多。

故在这个规模下,第一种算法更适宜。

1.12设有以下三个函数:

,,

请判断以下断言正确与否:

(1)f(n)是O(g(n))

(2)h(n)是O(f(n))

(3)g(n)是O(h(n))

(4)h(n)是O(n3.5)

(5)h(n)是O(nlogn)

解:

(1)对

(2)错(3)错(4)对(5)错

1.13试设定若干n值,比较两函数和的增长趋势,并确定n在什么范围内,函数的值大于的值。

解:

的增长趋势快。

但在n较小的时候,的值较大。

当n>438时,

1.14判断下列各对函数和,当时,哪个函数增长更快?

(1),

(2),

(3),

(4),

解:

(1)g(n)快

(2)g(n)快(3)f(n)快(4)f(n)快

1.15试用数学归纳法证明:

(1)

(2)

(3)

(4)

1.16试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值

解:

intmax3(intx,inty,intz)

{

if(x>y)

if(x>z)returnx;

elsereturnz;

else

if(y>z)returny;

elsereturnz;

}

1.17已知k阶斐波那契序列的定义为

,,…,,;

试编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。

解:

k>0为阶数,n为数列的第n项

intFibonacci(intk,intn)

{

if(k<1)exit(OVERFLOW);

int*p,x;

p=newint[k+1];

if(!

p)exit(OVERFLOW);

inti,j;

for(i=0;i

if(i

elsep[i]=1;

}

for(i=k+1;i

x=p[0];

for(j=0;j

p[k]=2*p[k-1]-x;

}

returnp[k];

}

1.18假设有A,B,C,D,E五个高等院校进行田径对抗赛,各院校的单项成绩均已存入计算机,并构成一张表,表中每一行的形式为

项目名称

性别

校名

成绩

得分

编写算法,处理上述表格,以统计各院校的男、女总分和团体总分,并输出。

解:

typedefenum{A,B,C,D,E}SchoolName;

typedefenum{Female,Male}SexType;

typedefstruct{

charevent[3];//项目

SexTypesex;

SchoolNameschool;

intscore;

}Component;

typedefstruct{

intMaleSum; //男团总分

intFemaleSum; //女团总分

intTotalSum; //团体总分

}Sum;

SumSumScore(SchoolNamesn,Componenta[],intn)

{

Sumtemp;

temp.MaleSum=0;

temp.FemaleSum=0;

temp.TotalSum=0;

inti;

for(i=0;i

if(a[i].school==sn){

if(a[i].sex==Male)temp.MaleSum+=a[i].score;

if(a[i].sex==Female)temp.FemaleSum+=a[i].score;

}

}

temp.TotalSum=temp.MaleSum+temp.FemaleSum;

returntemp;

}

1.19试编写算法,计算的值并存入数组a[0..arrsize-1]的第i-1个分量中(i=1,2,…,n)。

假设计算机中允许的整数最大值为maxint,则当n>arrsize或对某个,使时,应按出错处理。

注意选择你认为较好的出错处理方法。

解:

#include

#include

#defineMAXINT65535

#defineArrSize100

intfun(inti);

intmain()

{

inti,k;

inta[ArrSize];

cout<<"Enterk:

";

cin>>k;

if(k>ArrSize-1)exit(0);

for(i=0;i<=k;i++){

if(i==0)a[i]=1;

else{

if(2*i*a[i-1]>MAXINT)exit(0);

elsea[i]=2*i*a[i-1];

}

}

for(i=0;i<=k;i++){

if(a[i]>MAXINT)exit(0);

elsecout<

}

return0;

}

1.20试编写算法求一元多项式的值的值,并确定算法中每一语句的执行次数和整个算法的时间复杂度。

注意选择你认为较好的输入和输出方法。

本题的输入为,和,输出为。

解:

#include

#include

#defineN10

doublepolynomail(inta[],inti,doublex,intn);

intmain()

{

doublex;

intn,i;

inta[N];

cout<<"输入变量的值x:

";

cin>>x;

cout<<"输入多项式的阶次n:

";

cin>>n;

if(n>N-1)exit(0);

cout<<"输入多项式的系数a[0]--a[n]:

";

for(i=0;i<=n;i++)cin>>a[i];

cout<<"Thepolynomailvalueis"<

return0;

}

doublepolynomail(inta[],inti,doublex,intn)

{

if(i>0)returna[n-i]+polynomail(a,i-1,x,n)*x;

elsereturna[n];

}

本算法的时间复杂度为o(n)。

第2章线性表

2.1描述以下三个概念的区别:

头指针,头结点,首元结点(第一个元素结点)。

解:

头指针是指向链表中第一个结点的指针。

首元结点是指链表中存储第一个数据元素的结点。

头结点是在首元结点之前附设的一个结点,该结点不存储数据元素,其指针域指向首元结点,其作用主要是为了方便对链表的操作。

它可以对空表、非空表以及首元结点的操作进行统一处理。

2.2填空题。

解:

(1)在顺序

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2