数据结构第三版邓文华着习题参考答案.docx
- 文档编号:251343
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:29
- 大小:175.62KB
数据结构第三版邓文华着习题参考答案.docx
《数据结构第三版邓文华着习题参考答案.docx》由会员分享,可在线阅读,更多相关《数据结构第三版邓文华着习题参考答案.docx(29页珍藏版)》请在冰豆网上搜索。
附录习题参考答案
习题1参考答案
1.1.选择题
(1).A.
(2).A.(3).A.(4).B.,C.(5).A.(6).A.(7).C.(8).A.(9).B.(10.)A.
1.2.填空题
(1).数据 关系
(2).逻辑结构 物理结构
(3).线性数据结构 树型结构 图结构
(4).顺序存储 链式存储 索引存储 散列表(Hash)存储
(5).变量的取值范围 操作的类别
(6).数据元素间的逻辑关系 数据元素存储方式或者数据元素的物理关系
(7).关系 网状结构 树结构
(8).空间复杂度和时间复杂度
(9).空间 时间
(10).Ο(n)
1.3名词解释如下:
数据:
数据是信息的载体,是计算机程序加工和处理的对象,包括数值数据和非数值数据。
数据项:
数据项指不可分割的、具有独立意义的最小数据单位,数据项有时也称为字段或域。
数据元素:
数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理,一个数据元素可由若干个数据项组成。
数据逻辑结构:
数据的逻辑结构就是指数据元素间的关系。
数据存储结构:
数据的物理结构表示数据元素的存储方式或者数据元素的物理关系。
数据类型:
是指变量的取值范围和所能够进行的操作的总和。
算法:
是对特定问题求解步骤的一种描述,是指令的有限序列。
1.4语句的时间复杂度为:
(1)Ο(n2)
(2)Ο(n2)
(3)Ο(n2)(4)Ο(n-1)
(5)Ο(n3)
1.5参考程序:
main()
{
int X,Y,Z;
scanf(“%d,%d,%d”,&X,&Y,Z);if(X>=Y)
if(X>=Z)
if(Y>=Z)
{printf(“%d,%d,%d”,X,Y,Z);}
else
{printf(“%d,%d,%d”,X,Z,Y);}else
{printf(“%d,%d,%d”,Z,X,Y);}else
if(Z>=X)if(Y>=Z)
{printf(“%d,%d,%d”,Y,Z,X);}else
{printf(“%d,%d,%d”,Z,Y,X);}else
{printf(“%d,%d,%d”,Y,X,Z);}
}
1.6参考程序:
main()
{
inti,n;
floatx,a[],p;printf(“\nn=”);scanf(“%f”,&n);
printf(“\nx=”);scanf(“%f”,&x);for(i=0;i<=n;i++)
scanf(“%f”,&a[i]);p=a[0];
for(i=1;i<=n;i++)
{p=p+a[i]*x;
x=x*x;}printf(“%f”,p)’
}
习题2参考答案
2.1选择题
(1).C.
(2).B. (3).B. (4).B.5.D. 6.B. 7.B. 8.A. 9.A. 10.D.
2.2.填空题
(1).
有限序列
(2).
顺序存储和链式存储
(3).
O(n) O(n)
(4).
n-i+1 n-i
(5).
链式
(6).
数据 指针
(7).
前驱 后继
(8).
Ο
(1) Ο(n)
(9).
s->next=p->next;
p->next=s;
(10). s->next
2.3.解题思路:
将顺序表A中的元素输入数组a,若数组a中元素个数为n,将下标为0,1,2,…,(n-1)/2的元素依次与下标为n,n-1,…, (n-1)/2的元素交换,输出数组
a的元素。
参考程序如下:
main()
{
inti,n;floatt,a[];
printf(“\nn=”);scanf(“%f”,&n);for(i=0;i<=n-1;i++)
scanf(“%f”,&a[i]);
for(i=0;i<=(n-1)/2;i++)
{t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t;}for(i=0;i<=n-1;i++)
printf(“%f”,a[i]);
}
2.4算法与程序:
main()
{
inti,n;floatt,a[];
printf(“\nn=”);scanf(“%f”,&n);for(i=0;i scanf(“%f”,&a[i]); for(i=1;i {t=a[i]; a[i]=a[0]; a[0]=t;}printf(“%f”,a[0]); for(i=2;i {t=a[i]; a[i]=a[1]; a[1]=t;}printf(“%f”,a[0]); } 2.5算法与程序: main() { inti,j,k,n; floatx,t,a[];printf(“\nx=”);scanf(“%f”,&x); printf(“\nn=”);scanf(“%f”,&n);for(i=0;i scanf(“%f”,&a[i]); // 输入线性表中的元素 for(i=0;i k=i; for(j=i+1;j if(k<>j){t=a[i];a[i]=a[k];a[k]=t;} } for(i=0;i if(a[i]>x) break; for(k=n-1;k>=i;i--) // 移动线性表中元素,然后插入元素xa[k+1]=a[k]; a[i]=x; for(i=0;i<=n;i++) // 依次输出线性表中的元素 printf(“%f”,a[i]); } 2.6算法思路: 依次扫描A和B的元素,比较A、B当前的元素的值,将较小值的元素赋给C,如此直到一个线性表扫描完毕,最后将未扫描完顺序表中的余下部分赋给C即可。 C的容量要能够容纳A、B两个线性表相加的长度。 有序表的合并算法: void merge(SeqList A, SeqList B, SeqList*C) { int i,j,k;i=0;j=0;k=0; while (i<=A.last&&j<=B.last)if (A.data[i]<=B.data[j]) C->data[k++]=A.data[i++]; else C->data[k++]=B.data[j++];while (i<=A.last) C->data[k++]=A.data[i++]; while (j<=B.last) C->data[k++]=B.data[j++];C->last=k-1; } 2.7算法思路: 依次将A中的元素和B的元素比较,将值相等的元素赋给C,如此直到线性表扫描完毕,线性表C就是所求递增有序线性表。 算法: void merge(SeqList A, SeqList B, SeqList*C) { int i,j,k;i=0;j=0;k=0; while (i<=A.last)while(j<=B.last) if (A.data[i]=B.data[j]) C->data[k++]=A.data[i++];C->last=k-1; } 习题3参考答案 3.1.选择题 (1).D (2).C (3).D(4).C(5).B (6).C(7).C(8).C(9).B(10).AB (11).D(12).B(13).D(14).C(15).C(16).D(17).D(18).C(19).C(20).C 3.2.填空题 (1)FILO,FIFO (2)-1,34X*+2Y*3/- (3)stack.top,stack.s[stack.top]=x (4)p>llink->rlink=p->rlink,p->rlink->llink=p->rlink (5)(R-F+M)%M (6)top1+1=top2 (7)F==R (8)front==rear (9)front==(rear+1)%n (10)N-1 3.3答: 一般线性表使用数组来表示的 线性表一般有插入、删除、读取等对于任意元素的操作而栈只是一种特殊的线性表 栈只能在线性表的一端插入(称为入栈,push)或者读取栈顶元素或者称为“弹出、出栈” (pop)。 3.4答: 相同点: 栈和队列都是特殊的线性表,只在端点处进行插入,删除操作。 不同点: 栈只在一端(栈顶)进行插入,删除操作;队列在一端(top)删除,一端(rear)插入。 3.5答: 可能序列有14种: ABCD;ACBD;ACDB;ABDC;ADCB;BACD;BADC;BCAD;BCDA;BDCA;CBAD;CBDA;CDBA;DCBA。 3.6答: 不能得到4,3,5,6,1,2,最先出栈的是4,则按321的方式出,不可能得到 1在2前的序列,可以得到1,3,5,4,2,6,按如下方式进行push (1),pop(),push (2),push(3),pop(),push(4),push(5),pop(),pop(),pop(),push(6),pop()。 3.7答: stack 3.8非递归: intvonvert(intno,inta[]) //将十进制数转换为2进制存放在a[],并返回位数 { intr; SeStacks,*p; P=&s; Init_stack(p);while(no) { push(p,no%2);no/=10; } r=0; while(! empty_stack(p)) { pop(p,a+r);r++; } returnr; } 递归算法: voidconvert(intno) { if(no/2>0) { Convert(no/2);Printf(“%d”,no%2); } elseprintf(“%d”,no); } 3.9参考程序: voidview(SeStacks) { SeStack*p;//假设栈元素为字符型charc; p=&s; while(! empty_stack(p)) { c=pop(p);printf(“%c”,c); } printf(”\n”); } 3.10答: char 3.11参考程序: voidout(linkqueueq) { inte; while(q.rear! =q.front) { dequeue(q,e);print(e); //打印 } } 习题4参考答案 4.1选择题: (1).A (2).D (3).C (4).C (5).B (6).B (7).D(8).A (9).B (10).D 4.2填空题: (1)串长相等且对应位置
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第三 文华 习题 参考答案
![提示](https://static.bdocx.com/images/bang_tan.gif)