《数据结构》作业参考答案1.docx

上传人:b****7 文档编号:23690445 上传时间:2023-05-19 格式:DOCX 页数:19 大小:211.88KB
下载 相关 举报
《数据结构》作业参考答案1.docx_第1页
第1页 / 共19页
《数据结构》作业参考答案1.docx_第2页
第2页 / 共19页
《数据结构》作业参考答案1.docx_第3页
第3页 / 共19页
《数据结构》作业参考答案1.docx_第4页
第4页 / 共19页
《数据结构》作业参考答案1.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

《数据结构》作业参考答案1.docx

《《数据结构》作业参考答案1.docx》由会员分享,可在线阅读,更多相关《《数据结构》作业参考答案1.docx(19页珍藏版)》请在冰豆网上搜索。

《数据结构》作业参考答案1.docx

《数据结构》作业参考答案1

《数据结构》作业参考答案

一、选择题

1.ab

2.c

3. b

4. a,d

5.b

6.d

7. b

8.D

9.D

10.B

11.C

12.C 

13.c

14.d

15.a

16.b

17.c

18.d

19.c

20.b

21.b

22.c

23.c

24.d

25.d

26.c

二、填空题

1.

2.34

3.2k-1,2k-1,2k-2+1

4.v1,v3,v2,v4,v5

5.4

6.数据项

7.结点的直接前驱结点,结点的直接后继结点

8.ST.top==-1

9.参加比较的两个字符串长度相同

10.

11.120

三、算法应用题

1.

解答:

 

WPL=4*4+5*4+6*3+7*3+10*3+12*2+18*2

=9*4+23*3+30*2

=36+69+60

=165

2.解答:

和已知序列对应的二叉树是:

 

3.

4.解答:

各关键字的哈希函数值见下表:

key

19

01

23

14

55

20

84

27

68

11

10

77

H(key)=key%13

6

1

10

1

3

7

6

1

3

11

10

12

采用开放地址法的线性探测再散列方法解决冲突,已知其装填因子

,对上表中的关键字序列构造所得哈希表如下:

地址

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

key

01

14

55

27

68

19

20

84

23

11

10

77

比较次数

1

2

1

4

3

1

1

3

1

1

3

2

在等概率情况下,其查找成功时的平均查找长度是:

5.和已知序列对应的森林如下图示:

 

6.解答:

设这8个字母的权重为7,19,2,6,32,3,21,10

 

7.解答:

①如图所示的无向带权图的邻接矩阵如下图示:

1

2

3

4

5

6

1

0

6

1

5

2

6

0

5

3

3

1

5

0

5

6

4

4

5

5

0

2

5

3

6

0

6

6

4

2

6

0

按Prim算法求得的最小生成树如下图(f)所示(树中结点用粗黑实线表示):

假设初始时,树中只有一个顶点,不含有任何一条边,下图(a)~(f)为用Prim算法求其最小生成树的过程。

 

②如图所示的无向带权图的邻接表如下图示:

 

按照Kruskal算法求得的最小生成树如下图(f)所示(树中结点用粗黑实线表示),假设初始时,树中含有全部顶点,但不含有任何一条边,下图(a)~(f)为用Kruskal算法求最小生成树的过程。

 

8.解答:

① 快速排序的最好情况是指,排序所需的“关键字间的比较次数”和“记录的移动次数”最少的情况,在n=7时,至少需要进行2趟排序。

因此,当n=7时在最好情况下需进行的比较次数是10次。

② n=7时的一个最好情况的初始排列实例是:

4,7,5,6,3,1,2

 

9.解答:

对长度为20的有序表进行斐波那契查找的判定树如下图示:

 

其等概率查找时查找成功的平均查找长度为:

10.

解答:

 

上图所示AOE网中各顶点事件的最早发生时间Ve(i)和最迟发生时间Vl(i)如下表示:

V1

V2

V3

V4

V5

V6

V7

V8

V9

Ve(i)

0

6

4

5

7

7

16

14

18

Vl(i)

0

6

6

8

7

10

16

14

18

 

上图所示AOE网中各活动的最早开始时间e(i)和最迟开始时间l(i)如下表示:

a1

a2

a3

a4

a5

a6

a7

a8

a9

a10

a11

e(i)

0

0

0

6

4

5

7

7

7

16

14

l(i)

0

2

3

6

6

8

7

7

10

16

14

 

有上表的可见活动a1,a4,a7,a8,a10,a11的最早开始时间和最迟开始时间相等,因此他们是关键活动,他们所在的路径是关键路径。

见下图示。

有2条关键路径。

 

四、算法设计题

1.本题涉及的存储结构描述如下:

单链表存储结构:

typedefstructLnode*LinkList;

typedefstructLnode

{

DataTypedata;

LinkListnext;

}Lnode,*LinkList;

voidmergelinklist(LinkList&lc,LinkListla,LinkListlb)

{

lc=la;

pa=la->next;pb=lb->next;pc=lc;

lc->next=NULL;

while(pa&&pb)

{

pc->next=pa;

pc=pa;

pa=pa->next;

pc->next=pb;

pc=pb;

pb=pb->next;

}

if(pa)pc->next=pa;

delete(lb);

}

2.解答:

本题涉及的存储结构描述如下:

树的二叉链表存储结构:

typedefstrcutbitreenode*bitree;

typedefstructbitreenode{

datatypedata;

bitreelch,rch;

}bitreenode,*bitree;

队列的链式存储结构:

typedefstructlinkquenode*linkqueptr;

typedefstructlinkquenode{

bitreequelem;

linkqueptrnext;

}linkquenode,*linkqueptr;

typedefstructlinkque{

linkqueptrfront,rear;

}linkque;

voidlayertraverse(bitreebt)

{

cout<

”<

initqueue(Q);

if(bt)

{

enterqueueu(Q,bt);

while(!

emptyqueue(Q))

{

p=delqueue(Q);

cout<data;

if(p->lch)enterqueueu(Q,p->lch);

if(p->rch)enterqueueu(Q,p->rch);

}

}

elsecout<

}//遍历结束

3.解答:

本题涉及的存储结构描述如下:

图的邻接链表存储结构:

typedefstructadjvexnode*adjvexptr;

typedefstruct{

intadjvex;

adjvexptrnext;

}adjvexnode,*adjvexptr;

typedefstructvexnode{

DataTypedata;

Adjvexptrfirstadj;

}vexnode;

typedefstruct{

vexnodevertex[VexNum+1]

intvexnum,arcnum;

}Graph_adjlink

intNum_connected(Graph_adjlinkg)

{

count=0;

for(v=1;v<=g.vexnum;v++)visited[v]=false;

for(v=1;v<=g.vexnum;v++)

{

if(!

visited[v])dfs(g,v);

count++;

}

returncount;

}

voiddfs(Graph_adjlinkg,intv)

{

cout<

visited[v]=true;

p=g.vertex[v].firstadj;

while(p)

{

w=p->adjvex;

if(!

visited[w])dfs(g,w);

p=p->next;

}

}

4.解答:

本题涉及的存储结构描述如下:

单链表存储结构:

typedefstructLnode*LinkList;

typedefstructLnode

{

DataTypedata;

LinkListnext;

}Lnode,*LinkList;

voidmerge_two_asceding_linklist_to_one_desceding_linklist(LinkList&lc,LinkListla,lb)

{

pa=la->next;

pb=lb->next;

lc=la;

pc=lc;

pc->next=NULL;

while(pa&&pb)

{

if(pa->datadata)

{

u=pa->next;

pa->next=pc->next;

pc->next=pa;

pa=u;

}

else

{

u=pb->next;

pb->next=pc->next;

pc->next=pb;

pb=u;

}

}

while(pa)

{

u=pa->next;

pa->next=pc->next;

pc->next=pa;

pa=u;

}

while(pb)

{

u=pb->next;

pb->next=pc->next;

pc->next=pb;

pb=u;

}

delete(lb)

}

5.解答:

本题涉及的存储结构描述如下:

顺序存储结构:

constmaxsize=100;

typedefintElemType;

typedefstruct{

ElemTyper[maxsize+1];

intlength;//实际长度

}SqList;

Voidinert_x_into(SqList&va,intx)

{

j=va.length;

while((x=0))

{

va.r[j+1]=va.r[j];

j--;

}

va.r[j+1]=x;

va.length=va.length+1;

}

五、简答题

1.存储图:

2.树:

 

二叉树:

六、证明题

1.证明:

反证法。

设存在

使得

则①由

得出栈序列

②由

得知入栈序列为

由①知

最先出栈,则由②知出栈的序列将是

此出栈序列与由①得到的出栈序列矛盾。

因此假设错误。

从而若借助栈由输入序列

得到的输出序列为

(它是输入序列的一个排列),则在输出序列中不可能存在

使得

证毕

2.证明:

设总结点数为

,则:

①;

又该满k叉树上的每个结点出根之外都一个分支进入,这些分支是由非叶子结点产生的,因此有:

②;

由①和②得:

证毕

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

当前位置:首页 > 考试认证 > 公务员考试

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

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