数据结构第三版邓文华着习题参考答案Word文档下载推荐.docx
- 文档编号:13181473
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:29
- 大小:175.62KB
数据结构第三版邓文华着习题参考答案Word文档下载推荐.docx
《数据结构第三版邓文华着习题参考答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构第三版邓文华着习题参考答案Word文档下载推荐.docx(29页珍藏版)》请在冰豆网上搜索。
算法:
是对特定问题求解步骤的一种描述,是指令的有限序列。
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>
{printf(“%d,%d,%d”,X,Y,Z);
}
else
{printf(“%d,%d,%d”,X,Z,Y);
}else
{printf(“%d,%d,%d”,Z,X,Y);
if(Z>
=X)if(Y>
{printf(“%d,%d,%d”,Y,Z,X);
{printf(“%d,%d,%d”,Z,Y,X);
{printf(“%d,%d,%d”,Y,X,Z);
1.6参考程序:
inti,n;
floatx,a[],p;
printf(“\nn=”);
scanf(“%f”,&
n);
printf(“\nx=”);
x);
for(i=0;
i<
=n;
i++)
scanf(“%f”,&
a[i]);
p=a[0];
for(i=1;
{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的元素。
参考程序如下:
floatt,a[];
printf(“\nn=”);
=n-1;
for(i=0;
=(n-1)/2;
{t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}for(i=0;
printf(“%f”,a[i]);
2.4算法与程序:
n;
i++)if(a[i]>
a[0]
a[i]=a[0];
a[0]=t;
}printf(“%f”,a[0]);
for(i=2;
a[1]
a[i]=a[1];
a[1]=t;
2.5算法与程序:
inti,j,k,n;
floatx,t,a[];
printf(“\nx=”);
// 输入线性表中的元素
for(i=0;
i<
i++){ // 对线性表中的元素递增排序
k=i;
for(j=i+1;
j<
j++)if(a[j]<
a[k])k=j;
if(k<
>
j){t=a[i];
a[i]=a[k];
a[k]=t;
i++) // 在线性表中找到合适的位置
if(a[i]>
x) break;
for(k=n-1;
k>
=i;
i--) // 移动线性表中元素,然后插入元素xa[k+1]=a[k];
a[i]=x;
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&
&
=B.last)if (A.data[i]<
=B.data[j])
C->
data[k++]=A.data[i++];
data[k++]=B.data[j++];
while (i<
=A.last)
data[k++]=A.data[i++];
while (j<
=B.last)
C->
last=k-1;
2.7算法思路:
依次将A中的元素和B的元素比较,将值相等的元素赋给C,如此直到线性表扫描完毕,线性表C就是所求递增有序线性表。
=A.last)while(j<
if (A.data[i]=B.data[j])
习题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=&
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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第三 文华 习题 参考答案