《数据结构C语言描述》陈慧南主编答案.docx

上传人:b****5 文档编号:2857858 上传时间:2022-11-16 格式:DOCX 页数:14 大小:79.80KB
下载 相关 举报
《数据结构C语言描述》陈慧南主编答案.docx_第1页
第1页 / 共14页
《数据结构C语言描述》陈慧南主编答案.docx_第2页
第2页 / 共14页
《数据结构C语言描述》陈慧南主编答案.docx_第3页
第3页 / 共14页
《数据结构C语言描述》陈慧南主编答案.docx_第4页
第4页 / 共14页
《数据结构C语言描述》陈慧南主编答案.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

《数据结构C语言描述》陈慧南主编答案.docx

《《数据结构C语言描述》陈慧南主编答案.docx》由会员分享,可在线阅读,更多相关《《数据结构C语言描述》陈慧南主编答案.docx(14页珍藏版)》请在冰豆网上搜索。

《数据结构C语言描述》陈慧南主编答案.docx

《数据结构C语言描述》陈慧南主编答案

第一章绪论

1.(第14页,第(18)题)

确定划线语句的执行次数,计算它们的渐近时间复杂度。

(1)i=1;k=0;

do{

k=k+10*i;i++;

}while(i<=n-1)

划线语句的执行次数为n-1(n>=2),n=1时执行1次。

(2)i=1;x=0;

do{

x++;i=2*i;

}while(i

划线语句的执行次数为log2n。

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

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

for(intk=1;k<=j;k++)

x++;

划线语句的执行次数为n(n+1)(n+2)/6。

(4)x=n;y=0;

while(x>=(y+1)*(y+1))y++;

划线语句的执行次数为n。

第二章两种基本的数据结构

2-4.

Loc(A[i][j][k])=134+(i*n*p+j*p+k)*2

2-9.第34页习题

(2).9

voidInvert(Telements[],intlength)

{//length数组长度

//elements[]为需要逆序的数组

Te;

for(inti=1;i<=length/2;i++)

{

e=elements[i-1];

elements[i-1]=elements[length-i];

elements[length-i]=e;

}

}

2-12.第34页习题(12)

voidpInvert(Node*first)

{

Node*p=first,*q;

first=NULL;

while(p){

q=p->Link;p->Link=first;

first=p;p=q;

}

}

 

第三章栈与队列

1.第54页习题

(1)

设A、B、C、D、E五个元素依次进栈(进栈后可立即出栈),问能否得到下列序列。

若能得到,则给出相应的push和pop序列;若不能,则说明理由。

1)A,B,C,D,E2)A,C,E,B,D

3)C,A,B,D,E4)E,D,C,B,A

答:

(1)Push(A);Pop(A);Push(B);Pop(B);

Push(C);Pop(C);Push(D);Pop(D);

Push(E);Pop(E);

2)不能得到,因为E,B,D而言,E最先出栈,则表明,此时B和D均在栈中,由于,B先于D进栈,所以应有D先出栈。

3)不能得到,因为C,A,B而言,C最先出栈,则表明,此时A和B均在栈中,由于A优先于B近栈,所以B应比A先出栈。

(4)Push(A);Push(B);Push(C);Push(D);Push(E);

Pop(E);Pop(D);Pop(C);Pop(B);Pop(A);

5.

Stack1Stack2

 

TOP1TOP2

栈满Top2-Top1==1

Top1<0栈1空Top2>n-1栈2空

 

9:

voidPrintQueue(Queueq)

{

intfirst=q.Front+1;

while(((first)%q.MaxQueue)!

=q.Rear)

{

printf("%d\n",q.Elements[first]);

first=first+1;

}

printf("%d\n",q.Elements[first]);

}

voidPrintQueue2(Queueq)

{

for(inti=1;q.Front!

=q.Rear;i++)

{

printf("%d\n",q.Elements[(q.Front+1)%q.MaxQueue]);

q.Front=(q.Front+1)%q.MaxQueue;

}

}

voidPrintQueue3(Queueq)

{

for(;q.Front!

=q.Rear;q.Front=(q.Front+1)%q.MaxQueue)

{

printf("%d\n",q.Elements[(q.Front+1)%q.MaxQueue]);

}

}

第四章线性表与数组

1(85页)

intSearch_Insert(List*lst,Tx)

{

inti,j;

j=lst->Size-1;

for(i=lst->Size-1;i>=0;i--)

{

if(lst->Elements[i]==x)

{

returni;

}

}

if(lst->Size==lst->MaxList)

{

return-1;

}

while(lst->Elements[j]>x)

{

lst->Elements[j+1]=lst->Elements[j];

j--;

}

lst->Elements[j+1]=x;

lst->Size++;

returnj+1;

}

voidSearch_Delete(List*lst,Tx,Ty)

{

inti=0;

if(lst->Size==0)

{

printf("thelistisempty,cannotbedeleted!

\n");

return;

}

for(intj=0;jSize;j++)

{

if((lst->Elements[j]Elements[j]>y))

{

lst->Elements[i]=lst->Elements[j];

i=i+1;

}

}

lst->Size=i;

}

13.(第86页,第13题)给出下列稀疏矩阵的

顺序三元组的行优先和列优先表示。

答:

14.(第86页,第14题)

对题图4-5的稀疏矩阵执行矩阵转置时数组num[]和k[]的值。

答:

 

第五章树

第2题,第141页,

对于三个结点A,B和C,可分别组成多少不同的无序树、有序树和二叉树?

答:

(1)无序树:

9棵

(2)有序树:

12棵

(3)二叉树:

30棵

第3题,P141

n0=n2+2*n3+….+(m-1)nm+1

第5题,P142

(1)或者为空二叉树,或者所有结点的左子树都是空的单支树

(2)或者为空二叉树,或者只有根结点的二叉树

(3)或者为空二叉树,或者所有结点的右子树都是空的单支树

 

第7题,第142页,

给出对图6-31中的树的先序遍历和后序遍历的结果。

答:

先序:

D,E,H,F,J,G,C,K,A,B

中序:

H,E,J,F,G,K,C,D,A,B

后序:

H,J,K,C,G,F,E,B,A,D

第6题第142页,

设对一棵二叉树进行中序遍历和后序遍历的结果分别为:

(1)中序遍历BDCEAFHG

(2)后序遍历DECBHGFA

画出该二叉树。

答:

第8(3)题第142页,

intcount=0;

voidSizeOfLeaf(BTNode*t)

{

if(t){

if((!

(t->RChild))&&(!

(t->LChild)))

{

count=count+1;

}

SizeOfLeaf(t->LChild);

SizeOfLeaf(t->RChild);

}

}

 

第13题第142页,

将图题6-32中的树转换成二叉树,

并将图6-31中的二叉树转换成森林。

 

第18题第1438页,

设S={A,B,C,D,E,F},W={2,3,5,7,9,12},对字符集合进行哈夫曼编码,W为各字符的频率。

(1)画出哈夫曼树

(2)计算带权路径长度

编码:

A:

1010

B:

1011

C:

100

D:

00

E:

01

F:

11

 

第六章集合

第4题,P155

对半搜索算法要求其必须针对顺序存储的有序表。

顺序搜索从头搜到尾,所以不影响。

补充:

已知(1,2,3,4,5,6,7,8,9,10,11)找到9比较几次?

M=(1+11)/2=6比较一次

6<9,找[7,11]

M=(7+11)/2=9

9=9比较2次

成功

所以一共比较2次成功

第七章搜索树

1.第189页,第

(1),

建立37,45,91,25,14,76,56,65为输入时的二叉搜索树,再从该树上依此删除76,45,则树形分别如何?

第八章散列与跳表

第3题,第209页,

设散列表ht[11],散列函数h(key)=key%11。

采用线性探查法解决冲突,试用关键字值序

列:

70,25,80,35,60,45,50,55建立散列表。

线性探查法:

伪随机探查法:

P=13

0

1

2

3

4

5

6

7

8

9

10

55

45

35

25

70

80

50

60

对80:

(3+13)%11=5

对60:

(5+13)%11=7

二次探查法

0

1

2

3

4

5

6

7

8

9

10

45

35

80

25

70

60

50

55

对80:

(3+1*1)%11=4(3-1*1)%11=2

对35:

(2+1*1)%11=3(2-1*1)%11=1

对45:

(1+1*1)%11=2(12-1*1)%11=0

对55:

(0+1*1)%11=1(0-1*1)%11=10

第4题,第209页,

双散列法:

70

25

80

35

60

45

50

55

H1

4

3

3

2

5

1

6

0

H2

9

1

6

 

0

1

2

3

4

5

6

7

8

9

10

55

80

35

25

70

60

45

50

对80:

(3+1*9)%11=1

对45:

(1+1*1)%11=2(1+2*1)%11=3

(1+3*1)%11=4(1+4*1)%11=5

(1+5*1)%11=6

对50:

(6+1*6)%11=1(6+2*6)%11=7

 

第九章图

(1)题,第243页,

对下面的有向图求

(1)每个顶点的入度和出度;

(2)强连通分量

(3)邻接矩阵

(2)题,第243页,

当以边〈1,0〉,〈1,3〉,〈2,1〉,〈2,4〉,〈3,2〉,〈3,4〉,〈4,0〉,〈4,1〉,〈4,5〉,

〈5,0〉的次序从只有6个顶点没有边的图开始,通过依此插入这些边,建立邻接表结构。

画出该邻接表。

深度优先遍历:

0,1,3,4,5

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

当前位置:首页 > 表格模板 > 调查报告

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

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