最新数据结构形成性考核答案作业14.docx
- 文档编号:9374478
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:25
- 大小:194.84KB
最新数据结构形成性考核答案作业14.docx
《最新数据结构形成性考核答案作业14.docx》由会员分享,可在线阅读,更多相关《最新数据结构形成性考核答案作业14.docx(25页珍藏版)》请在冰豆网上搜索。
最新数据结构形成性考核答案作业14
数据结构(本)形成性考核作业答案
作业1
一、单项选择题
1.C2.D3.B4.C5.D6.C7.B8.C9.A10.B11.C12.D13.C14.A15.B16.C17.C18.B19.B20.D
二、填空题
1.n-i+1
19.头结点的指针指向第一个结点的指针
20.链式链表
三、问答题
1.简述数据的逻辑结构和存储结构的区别与联系,它们如何影响算法的设计与实现?
答:
若用结点表示某个数据元素,则结点与结点之间的逻辑关系就称为数据的逻辑结构。
数据在计算机中的存储表示称为数据的存储结构。
可见,数据的逻辑结构是反映数据之间的固有关系,而数据的存储结构是数据在计算机中的存储表示。
尽管因采用的存储结构不同,逻辑上相邻的结点,其物理地址未必相同,但可通过结点的部信息,找到其相邻的结点,从而保留了逻辑结构的特点。
采用的存储结构不同,对数据的操作在灵活性,算法复杂度等方面差别较大。
2.解释顺序存储结构和链式存储结构的特点,并比较顺序存储结构和链式存储结构的优缺点。
答:
顺序结构存储时,相邻数据元素的存放地址也相邻,即逻辑结构和存储结构是统一的,,要求存中存储单元的地址必须是连续的。
优点:
一般情况下,存储密度大,存储空间利用率高。
缺点:
(1)在做插入和删除操作时,需移动大量元素;
(2)由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;(3)表的容量难以扩充。
链式结构存储时,相邻数据元素可随意存放,所占空间分为两部分,一部分存放结点值,另一部分存放表示结点间关系的指针。
优点:
插入和删除元素时很方便,使用灵活。
缺点:
存储密度小,存储空间利用率低。
3.什么情况下用顺序表比链表好?
答:
顺序表适于做查找这样的静态操作,链表适于做插入和删除这样的动态操作。
如果线性表的变化长度变化不大,且其主要操作是查找,则采用顺序表;如果线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。
4.解释头结点、第一个结点(或称首元结点)、头指针这三个概念的区别?
答:
头结点是在链表的开始结点之前附加的一个结点;第一个结点(或称首元结点)是链表中存储第一个数据元素的结点;头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针。
5.解释带头结点的单链表和不带头结点的单链表的区别。
答:
带头结点的单链表和不带头结点的单链表的区别主要体现在其结构上和算法操作上。
在结构上,带头结点的单链表,不管链表是否为空,均含有一个头结点,不带头结点的单链表不含头结点。
在操作上,带头结点的单链表的初始化为申请一个头结点。
无论插入或删除的位置是地第一个结点还是其他结点,算法步骤都相同。
不带头结点的单链表,其算法步骤要分别考虑插入或删除的位置是第一个结点还是其他结点。
因为两种情况的算法步骤不同。
四、程序填空题
1.
(1)p->data=i
(2)p->next=NULL(3)q->next=p(4)q=p
2.
(1)head=p
(2)q=p
(3)p->next=NULL(4)p->next=q->next(5)q->next=p3.
(1)p=q->next
(2)q->next=p->next
五、完成:
实验1――线性表
根据实验要求(见教材P201-202)认真完成本实验,并提父实验报告。
作业2答案
、单项选择题
1.
C
2.
B3
.
A4
.
C5
.B
6
.A
7.B8
.C9.
A
10.
C
11
.B
12
.C
13
.B
14
.B
15.
A
16
.C17.
B18.
A
19.
C20.
D
21
.B
22
.D
23
.C
24
.B
25.
D
26
.A27.
C28.D
29
.D
30.C
31
.A32
.D
二、填空题
1.后进先出
2.下一个
3.增1增1
4.假上溢
5.
栈是否满s->top=MAXSIZE-1栈顶指针栈顶对应的数组元素栈是否空s->top=-1栈顶元素修改栈顶指针
6.bceda
7.终止条件递归部分
8.LU->front==LU->rear
9.运算符操作数ab+c/fde/--
10.s->next=h;
11.h=h->next;
12.r->next=s;
13.f=f->next;
14.字符
15.顺序存储方式链式存储方式
16.0空格字符的个数
17.特殊稀疏
18.()(())2
19.((d,e,f))
20.串长度相等且对应位置的字符相等
21.i(i-1)/2+j
22.行下标、列下标、非零元素值
三、问答题
1.简述栈和一般线性表的区别。
答:
栈是一种先进后出的线性表,栈的插入和删除操作都只能在栈顶进行,而一般的线性表可以在线性表的任何位置进行插入和删除操作。
2.简述队列和一般线性表的区别。
队列是一种先进先出的线性表,队列的插入只能在队尾进行,队列的删除只能在队头进行,而一般的线性表可以在线性表的任何位置进行插入和删除操作。
3.链栈中为何不设头结点?
答:
因为链栈只在链头插入和删除结点,不可能在链表中间插入和删除结点,算法实现很简单,所以一般不设置头结点。
4.利用一个栈,则:
(1)如果输入序列由A,B,C组成,试给出全部可能的输出序列和不可能的输出序列。
(2)如果输入序列由A,B,C,D组成,试给出全部可能的输出序列和不可能的输出序列。
答:
(1)
栈的操作特点是后进先出,
因此输出序列有:
A入,
A出,
B入,
B出,
C入C出,输出序列为
ABC。
A入,
A出,
B入,
C入,
C出,
B出,
输出序列为
ACB。
A入,
B入,
B出,
A出,
C入,
C出,
输出序列为
BAC。
A入,
B入,
B出,
C入,
C出,
A出,
输出序列为
BCA。
A入,
B入,
C入,
C出,
B出,
A出,
输出序列为
CBA。
由A,B,C组成的数据项,除上述五个不同的组合外,还有一个C,A,B组合。
但不可能先把C出栈,
再把A出栈,(A不在栈顶位置),最后把B出栈,所以序列CAB不可能由输入序列A,B,C通过栈得到。
(2)按照上述方法,可能的输出序列有:
ABCD,ABDC,ACBD,ACDB,ADCB,BACD,BADC,BCAD,BCDA,BDCA,CBAD,CBDA,CDBA,DCBA。
不可能的输出序列有:
DABC,ADBC,DACB,DBAC,BDAC,DBCA,DCAB,CDAB,CADB,CABD
5.用S表示入栈操作,X表示出栈操作,若元素入栈顺序为1234,为了得到1342出栈顺序,相应的
S和X操作串是什么?
答:
应是SXSSXSXX各操作结果如下:
S1
入栈
X
1
出栈
输出序列:
1
S
2
入栈
S
3
入栈
X
3
出栈
输出序列:
13
S
4
入栈
X
4
出栈
输出序列:
134
X
2
出栈
输出序列:
1342
6•有5个元素,其入栈次序为:
AB、C、DE,在各种可能的出栈次序中,以元素C、D最先的次
序有哪几个?
答:
从题中可知,要使
C第一个且D第二个出栈,应是A入栈,B入栈,C入栈,C出栈,D入栈。
之
后可以有以下几种情况:
所以可能的次序有:
CDBAE,CDBEA,CDEBA
7.写出以下运算式的后缀算术运算式
⑴3x2+x-1/x+5
⑵(A+B)*C-D/(E+F)+G答;对应的后缀算术运算式
⑴3x2A*x+1x/-5+
⑵AB+C*DEF+/-G+
8.简述广义表和线性表的区别和联系。
答:
广义表是线性表的的推广,它也是n(n>0)个元素a1,a2…ai…an的有限序列,其中ai或者是原子或
者是一个广义表。
所以,广义表是一种递归数据结构,而线性表没有这种特性,线性表可以看成广义表的特殊情况,当ai都是原子时,广义表退化成线性表。
四、程序填空题
1.
(1)q_>front_>next=p->next;
(2)free(p);
(3)q->rear=q->front
五、综合题
1.
答:
出队序列是e2,e4,e3,e6,e5,e1的过程:
⑴el入栈(栈底到栈顶元素是e1)
⑵e2入栈(栈底到栈顶元素是e1,e2)
⑶e2出栈(栈底到栈顶元素是e1)
⑷e3入栈(栈底到栈顶元素是e1,e3)
⑸e4入栈(栈底到栈顶元素是e1,e3,e4)
⑹e4出栈(栈底到栈顶元素是e1,e3)
⑺e3出栈(栈底到栈顶元素是e1)
⑻e5入栈(栈底到栈顶元素是e1,e5)
⑼e6入栈(栈底到栈顶元素是e1,e5,e6)
⑽e6出栈(栈底到栈顶元素是e1,e5)
(11)e5出栈(栈底到栈顶元素是el)
(12)el出栈(栈底到栈顶元素是空)
栈中最多时有3个元素,所以栈S的容量至少是3。
2.
算法设计如下:
/*只有一个指针rear的链式队的基本操作*/
#inelude
typedefcharelemtype;
structnode/*定义链队列结点*/
{
elemtypedata;
structnode*next;
};
typedefstructqueue/*定义链队列数据类型*/
{
structnode*rear;
}LinkQueue;
voidinitqueue(LinkQueue*Q)/*初始化队列*/
{
Q=(structqueue*)malloc(sizeof(structqueue));
Q->rear=NULL;
入队算法*/
}
voidenqueue(LinkQueue*Q,elemtypex)/*{
structnode*s,*p;
s=(structnode*)malloc(sizeof(structnode));s->data=x;
if(Q->rear==NULL)/*原为空队时*/{
Q->rear=s;
s->next=s;
}
else/*原队不为空时*/{
p=Q->rear->next;/*p指向第一个结点*/Q->rear->next=s;/*将s到队尾*/Q->rear=s;/*Q->rear指向队尾*/s->next=p;
}
}
voiddelqueue(LinkQueue*Q)/*出队算法*/
{
structnode*t;
if(Q->rear==NULL)
{
printf("队列为空!
\n");return(0);
}
elseif(Q->rear->next==Q->rear)/*
{
t=Q->rear;
Q->rear=NULL;
}
else/*有多个结点时*/
{
t=Q->rear->next;/*tQ->rear->next=t->next;/*}free(t);
}
只有一个结点时*/
指向第一个结点*/引成循环链*/
elemtypegethead(LinkQueue*Q)/*{
if(Q->rear==NULL)
printf("队列为空!
\n");
else
return(Q->rear->next->data);}
取队首元素算法*/
intemptyqueue(LinkQueue*Q)/*
{
if(Q->rear==NULL)return
(1);/*
elsereturn(0);/*不为空,则返回
判断队列是否为空算法
为空,则返回true*/flase*/
*/
}
voiddispqueue(LinkQueue*Q)/*
显示队列中元素算法*/
structnode*p=Q->rear->next;printf("队列元素:
");while(p!
=Q->rear)
{
printf("%c",p->data);p=p->next;
}printf("%c\n",p->data);
}
六、完成:
实验2――栈、队列、递归程序设计
根据实验要求(见教材P03)认真完成本实验,并提交实验报告。
作业3答案
一、单项选择题
1.B2.B3.D4.C5.B6.A7.A8.C9.A10.D
11.A12.C13.C14.B15.B16.C17.B18.C19.A20.B
21.D22.B23.B24.B25.C26.A27.A28.C
二、填空题
1.子树树木或后继结点数2.树中所有结点的度的最大值3.分支结点非终端结点4.叶子结点终端结点5.子树的根后继结点孩子结点6.祖先
7.树中结点的最大层数
8.log2n1
9.根结点左子树右子树
10.左子树根结点右子树
11.左子树右子树根结点12.权
13.带权路径长度之和
14.最优二叉树最小的二叉树15.69
16.2m-1
17.多对多
18.所有顶点一次
19.先序
20.按层次
21.n2
22.邻接矩阵邻接表
23.2(n-1)
24.n-1
25.栈
3•答
⑴已知深度为k的二叉树最多有2k-1个结点(K>1),
29-1<892<210-1,故树的高度为10
⑵对于完全二叉树来说,度为1的结点只能是0或1
因为n=n0+n1+n2和n0=n2+1
得:
设n仁0,892=n0+0+n2=2n2+1得n2不为整数出错
设n仁1,892=n0+1+n2=2n2+2
得n2=445tn0=n2+仁446
叶子结点数为446。
⑶由⑵得单支结点数为1
⑷对于n个结点的完全二叉树,最后一个树叶结点,即序号为n的叶结点其双亲结点即为最后
一个非终端结点,
序号为892/2=446。
4.
(1)先序序列和中序序列相同的二叉树为空树或任一结点均无左孩子的非空二叉树
2)中序和后序序列相同的二叉树为空树或任一结点均无右孩子的非空二叉树
(3)先序和后序序列相同的二叉树为空树或仅有一个结点
5.
(1)哈夫曼树如图B-4所示。
0
JJL
1
■
1
0
◎、1
30
0
20
1
I
1
•.丿
B
10
.iA
1
0
1
A
7
5
H
C
0
1
2
3
F
G
图B-4
0
0
15
D0
8
E
(2)其带权路径长度WPL直为270。
(3)每个字符的哈夫曼编码为:
A:
100,
1:
01
6•答
(1)深度优先遍历:
v1,v2,v3,v8,v5,v7,v4,v6
广度优先遍历:
v1,v2,v4,v6,v3,v5,v7,v8
(2)G的拓扑序列为:
v1,v2,v4,v6,v5,v5,v3,v5,v7,v8
⑶最短路径为:
v1,v2,v5,v7,v8
g1的图示和图g1的邻接表如下图所示。
图G的邻接矩阵如下图所示:
③V1V2、V3V4、V5的度分别为:
2,3,2,3,2
四、程序分析题
1.
(1)returnc1+1
(2)NodeLevel(BT->right,X)
(3)(c2>=1)returnc2+1
2.
(1)for(j=0;j (2)dfstree(GA,j,n); 五、算法设计题1.写一个将一棵二叉树复制给另一棵二叉树的算法。 defineNULL0 typedefstructbtnode { elemtypedata; structbtnode*lchild,*rchild; }bitnode,*bitree; bitree*CopyTree(bitnode*p) { /*复制一棵二叉树*/bitnode*t; if(p! =NULL) { t=(bitnode*)malloc(sizeof(bitnode));t->data=p->data; t->lchild=CopyTree(p->lchild);t->rchild=CopyTree(p->rchild); return(t); } elsereturn(NULL); }/*CopyTree*/ 2. intBTreeLeafCount(structBTreeNode*BT) { if(BT==NULL)return0; elseif(BT->left==NULL&&BT->right==NULL)return1; elsereturnBTreeLeafCount(BT->left)+BTreeLeafCount(BT->right); } 六、完成: 实验3――栈、队列、递归程序设计实验4——图的存储方式和应用 根据实验要求(见教材F2O3)认真完成本实验,并提交实验报告。 作业4答案 一、单项选择题 1.D2.C3.B4.C5.D6.A7.C8.D9.B10.D 11C12C13A14C15D16B17B18D19D20A 21D22D23A24A25C26C27B28A29B30C 二、填空题 1哈希表查找法 2数据项的值记录 3主关键字 4数学期望值 5顺序 6二分查找升序或降序排列 7顺序存储结构 8索引顺序查找顺序查找 9均小于根结点的值均大于根结点的值二叉排序树 10自变量函数值 119,14,16,17 12部排序外部排序 13交换排序 143 1548 16堆排序快速排序 17主关键字 18关键字相等的记录 19n-1,n-j 20堆尾堆顶向下 三、综合题 1已知序列(70,83,100,65,10,32,7,9),请写出对此序列采用插入排序法进行升序排序时各趟的结果。 答: 原始序列: (70),83,100,65,10,32,7,9 15,8),请写出对此序列采用归并排序法进行升序排序 第1趟: (70,83),100,65,10,32,7,9 第 2趟: (70, 83, 100 ),65,10, 32, 7, 9 第 3趟: (65, 70, 83, 100),10, 32, 7, 9 第 4趟: (10, 65, 70, 83,100), 32, 7, 9 第 5趟: (10, 32, 65, 70,83,10 0), 7, 9 第 6趟: (7, 10, 32, 65,70,83, 100), 9 第 7趟: (7, 9,1 0,3 2,65,70, 83, 100) 2已知序列(10,18,4,3,6,12,1,9,时各趟的结果。 答: 原始序列: 10, 18,4, 3,6, 12,1, 9, 15, 8 第1趟: [10 18][3 4][6 12][1 9][8 1 5] 第2趟: [3, 4,10, 18,][ 1 6, 9, 12][ 8, 15] 第3趟: [3, 4,10, 18,][ 1 6, 8, 9, 12, 15] 第4趟: [1, 3,4,6 i,8, 9, 10, 12, 15, 18] 3.已知序; 列( 17,18, 60,4 0, 乙3 2, 73, 65, 85)采用冒泡排序法排序的各趟的结果如下 原始初始: 17, 18,60, 40, 7, 32, 73, 65, 85 第 1趟: 17,18, 40 7, 32, 60, 65, 73, 85 第 2趟: 17,18, 乙 32, 40, 60, 65, 73, 85 第 3趟: 17,7, 18, 32, 40, 60, 65, 73, 85 第 4趟: 7,17, 18, 32, 40, 60, 65, 73, 85 第 5趟: 7,17, 18, 32, 40, 60, 65, 73, 85 4. 已知序列(503, 87, 512, 61, 908 17 0,897,275,653,462)请给出采用快速排序法对该序 列作升序排列时的每一趟结果。 原始序列: 503,87,512,61,908,170,897,275,653,462第1趟: [462,87,275,61,170]503[897,908,653,512]第2趟: [170,87,275,61]462,503[897,908,653,512]第3趟: [87,61]170[275]462,503[897,908,653,512] 第4趟: 61[87]170[275]462,503[897,908,653,512] 第 5趟: 61 87, 170, [275] 462 第 6趟: 61 87,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 数据结构 形成 考核 答案 作业 14