数据结构答案.docx
- 文档编号:9689039
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:16
- 大小:24.35KB
数据结构答案.docx
《数据结构答案.docx》由会员分享,可在线阅读,更多相关《数据结构答案.docx(16页珍藏版)》请在冰豆网上搜索。
数据结构答案
第1章绪论
【习题1-1】根据二元组表示分析其数据结构。
有下列几种用二元组表示的数据结构,试画出它们分别对应的图形表示(当出现多个关系时,对每个关系画出相应的结构图),并指出它们分别属于何种结构。
1.A=(K,R),其中,
K={a1,a2,a3,,an}
R={}
2.B=(K,R),其中,
K={a,b,c,d,e,f,g,h}
R={r}
r={,,
3.C=(K,R),其中,
K={a,b,c,d,e,f,g,h}
R={
4.D=(K,R),其中,
K={1,2,3,4,5,6}
R={(1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)}
5.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>}
参考解答:
略。
【习题1-2】按要求设计抽象数据类型。
设计二次多项式ax2+bx+c的一种抽象数据类型,假定该抽象数据类型命名为QUAdratic,该类型的数据部分为3个系数项a、b和c,操作部分为:
1.初始化数据成员a、b和c(假定用记录类型Quadratic定义数据成员),每个数据成员的默认值为0。
voidInitQuadratic(Quadratic&q,floataa=0,floatbb=0,floatcc=0);
2.做两个多项式加法,即使对应的系数相加,返回相加结果。
QuadraticAdd(Quadratic&q1,Quadratic&q2);
3.根据给定x的值,计算多项式的值并返回。
floatEval(Quadratic&q,floatx);
4.计算方程ax2+bx+c=0的两个实数根并引用返回,对于有实根、无实根和不是二次方程(即a==0)这3种情况都要返回不同的整数值,以便调用函数做不同的处理。
intRoot(Quadratic&q,float&r1,float&r2);
5.按照ax**2+bx+c的格式(x2用x**2表示)输出二次多项式,在输出时要注意去掉系数为0的项,并且当b和c的值为负时,其前不能出现加号。
voidPrint(Quadratic&q);
请写出上面每一个操作的具体实现。
作为选择,有兴趣的学生还可以给出该抽象数据类型所对应的C++类的描述。
参考答案包含在下面的程序之中。
#include
#include
structQuadratic{
floata;floatb;floatc;
};
voidInitQuadratic(Quadratic&q,floataa,floatbb,floatcc)
{
q.a=aa;
q.b=bb;
q.c=cc;
}
QuadraticAdd(Quadratic&q1,Quadratic&q2)
{
Quadraticq;
q.a=q1.a+q2.a;
q.b=q1.b+q2.b;
q.c=q1.c+q2.c;
returnq;
}
floatEval(Quadratic&q,floatx)
{
return(q.a*x*x+q.b*x+q.c);
}
intRoot(Quadratic&q,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;
}
elsereturn0;
}
voidPrint(Quadratic&q)
{
if(q.a){
if(q.a==1.0)cout<<'';
elseif(q.a==-1.0)cout<<'-';
elsecout< cout<<"x**2"; } if(q.b) if(q.b>0){ cout<<"+"; if(q.b! =1.0)cout< cout<<"x"; } else{ if(q.b==-1.0)cout<<'-'; elsecout< cout<<"x"; } if(q.c) if(q.c>0)cout<<"+"< elsecout< cout< } voidmain() { Quadraticq1,q2; floata,b,c,d1,d2; cout<<"输入一个二次多项式三个系数项的值: "; cin>>a>>b>>c; InitQuadratic(q1,a,b,c); cout<<"输入另一个二次多项式三个系数项的值: "; cin>>a>>b>>c; InitQuadratic(q2,a,b,c); q2=Add(q1,q2); cout< intf=Root(q1,d1,d2); if(f==1)cout< Print(q1); Print(q2); } 若采用C++语言中的“类”描述,则参考程序如下。 #include #include classQuadratic{ floata;floatb;floatc; public: Quadratic(floataa=0,floatbb=0,floatcc=0); QuadraticAdd(Quadratic&q2); floatEval(floatx); intRoot(float&r1,float&r2); voidPrint(); }; Quadratic: : Quadratic(floataa,floatbb,floatcc) { a=aa;b=bb;c=cc; } QuadraticQuadratic: : Add(Quadratic&q2) { Quadraticq; q.a=a+q2.a; q.b=b+q2.b; q.c=c+q2.c; returnq; } floatQuadratic: : Eval(floatx) { return(a*x*x+b*x+c); } intQuadratic: : Root(float&r1,float&r2) { if(a==0)return-1; floatx=b*b-4*a*c; if(x>=0){ r1=(float)(-b+sqrt(x))/(2*a); r2=(float)(-b-sqrt(x))/(2*a); return1; } elsereturn0; } voidQuadratic: : Print() { if(a){ if(a==1.0)cout<<''; elseif(a==-1.0)cout<<'-';
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)