《数据结构》作业参考答案1.docx
- 文档编号:23690445
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:19
- 大小:211.88KB
《数据结构》作业参考答案1.docx
《《数据结构》作业参考答案1.docx》由会员分享,可在线阅读,更多相关《《数据结构》作业参考答案1.docx(19页珍藏版)》请在冰豆网上搜索。
《数据结构》作业参考答案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< 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->data { 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 { va.r[j+1]=va.r[j]; j--; } va.r[j+1]=x; va.length=va.length+1; } 五、简答题 1.存储图: 2.树: 二叉树: 六、证明题 1.证明: 反证法。 设存在 使得 。 则①由 得出栈序列 ; ②由 得知入栈序列为 ; 由①知 最先出栈,则由②知出栈的序列将是 。 此出栈序列与由①得到的出栈序列矛盾。 因此假设错误。 从而若借助栈由输入序列 得到的输出序列为 (它是输入序列的一个排列),则在输出序列中不可能存在 使得 。 证毕 2.证明: 设总结点数为 ,则: ①; 又该满k叉树上的每个结点出根之外都一个分支进入,这些分支是由非叶子结点产生的,因此有: ②; 由①和②得: 证毕
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 作业 参考答案