数据结构期末考试补充复习题 1.docx
- 文档编号:29106712
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:13
- 大小:166.08KB
数据结构期末考试补充复习题 1.docx
《数据结构期末考试补充复习题 1.docx》由会员分享,可在线阅读,更多相关《数据结构期末考试补充复习题 1.docx(13页珍藏版)》请在冰豆网上搜索。
数据结构期末考试补充复习题1
数据结构期末考试补充复习题答案
之前发给大家的各章节练习题一定要做,这里再补充一些题目。
一、综合题
1.(8分)一无向网如图2所示,解答下列问题:
(1)写出该无向网的邻接矩阵;
(2)按步骤画出使用克鲁斯卡尔算法为图2构造的最小生成树。
参考解答:
(1)用0、1表示的扣1分,只要是写对了权值的没扣分
(2)最小生成树的长度刚好和步骤顺序相对应了,没标步骤的暂时没统一扣1分
2.(10分)一有向网如图3所示,回答下列问题:
(1)求出该有向网中每个顶点的入度和出度;
(2)利用迪杰斯特拉算法求解该图从源点V1到其它各顶点的最短路径及其路径长度。
参考解答:
(1)5分
顶点
V1
V2
V3
V4
V5
入度
0
2
1
3
2
出度
3
1
3
0
1
(2)Len表示最短路径长度5分
终点
从源点V1到各终点的最短路径的求解过程
i=1
i=2
i=3
i=4
V2
6
4
-----
-----
V3
1
-----
-----
-----
V4
∞
11
8
7
V5
6
6
6
-----
Vj:
len
V3:
1
V2:
4
V5:
6
V4:
7
3.(10分)给定7个叶子结点,其权值分别为{7,6,25,13,4,12,9},画出构造的哈夫曼树(权值小的为左孩子)并求出树的带权路径长度WPL。
参考解答:
WPL=(13+25)*2+(7+9+12)*3+(4+6)*4=200(2分)
4.(7分)利用算符优先算法对表达式2*(6-3)#求值,写出操作符栈和操作数栈在任意时刻的状态。
参考解答:
步骤
算符栈
操作数栈
表达式
0
#
2*(6-3)#
1
#
2
*(6-3)#
2
#*
2
(6-3)#
3
#*(
2
6-3)#
4
#*(
26
-3)#
5
#*(-
26
3)#
6
#*(-
263
)#
7
#*(
23
)#
8
#*
23
#
9
#
6
#
10
6
5.(7分)(10分)已知一棵二叉树的后序遍历序列为DGEBCA,中序遍历序列为DBEGAC。
画出这棵二叉树。
参考解答:
6.(10分)设有一组关键字(25,74,49,53,15),采用哈希函数:
H(key)=keymod7,表长为10,用开放地址法的线性探测再散列方法Hi=(H(key)+di)mod10(di=1,2,3,…,)解决冲突。
写出哈希表的详细构造过程。
参考解答:
地址
0
1
2
3
4
5
6
7
8
9
关键字
49
15
25
74
53
H(25)=25mod7=4
H(74)=74mod7=4
H1=(H(74)+1)mod10=5
H(49)=49mod7=0
H(53)=53mod7=4
H1=(H(53)+1)mod10=5
H2=(H(53)+2)mod10=6
H(15)=15mod7=1
7.已知一个有向图的邻接表如图1所示,顶点1的入度为(),顶点2的出度为(),从顶点1出发得到的深度优先遍历序列是(),从顶点1出发得到的广度优先遍历序列是()。
解答:
(2)、
(1)、(1243)、(1234)
8.给定序列(67,45,87,19,55,32,70,60,90,23),写出它的初始堆序列。
答:
调整后的初始堆序列(小根堆)为:
19,23,32,45,55,87,70,60,90,67
或者是大根堆:
90,67,87,60,55,32,70,45,19,23
9.
2、程序设计题
1.(4分)
TypedefstructLNode
{
ElemTypedata;//数据域
structLnode*next;//指针域
}LNode,*LinkList;
StatusListInsert_L(LinkList&L,inti,ElemTypee)
{//带头结点的单链表L中,删除第i个元素,并由e返回其值
j=0;p=L;
while(p->next&&j { (1)//指针p后移 ++j; } if(! p->next||j>i-1)returnERROR; q=p->next; (2)//删除结点 (3)//e返回其值 (4)//释放结点 returnOK; } 参考解答: (1)p=p->next; (2)p->next=q->next (3)e=q->data;(4)free(q); 每空一分,学生写出其他形式的正确答案也给分,比如 (2)p->next=p->next->next; 缺少分号不给分。 完全正确才给分,不存在半对。 2.(10分)采用三元组表示的矩阵M,其转置矩阵为T。 请写出线性时间复杂度的快速转置算法FastTranMat。 求解提示: #defineN4 #defineMaxSize100 typedefintElemType; typedefstruct {intr;/*行号*/ intc;/*列号*/ ElemTyped;/*元素值*/ }TupNode;/*三元组定义*/ typedefstruct {introws;/*行数值*/ intcols;/*列数值*/ intnums;/*非零元素个数*/ TupNodedata[MaxSize]; }TSMatrix;/*三元组顺序表定义*/ voidCreatMat(TSMatrix&t,ElemTypeA[N][N]) {;//略…创建矩阵A的三元组t } voidDispMat(TSMatrixt) {;//略…按三元组显示出矩阵t } intmain() { ElemTypea1[N][N]={{1,0,3,0},{0,1,0,0},{0,0,1,0},{0,0,1,1}}; TSMatrixa,c; CreatMat(a,a1); printf("a的三元组: \n");DispMat(a); TranMat(a,c); printf("a转置为c\n"); DispMat(c); FastTranMat(a,c); printf("下面是快速转置矩阵得到的: \n"); DispMat(c); } voidTranMat(TSMatrixM,TSMatrix&T) {//采用三元组表存储表示,求矩阵M的转置矩阵T //本算法的时间复杂度为O(nu*tu),非线性的。 intp,q=0,v;/*q为tb.data的下标*/ T.rows=M.cols;T.cols=M.rows;T.nums=M.nums; if(M.nums! =0) { for(v=0;v for(p=0;p if(M.data[p].c==v) { T.data[q].r=M.data[p].c; T.data[q].c=M.data[p].r; T.data[q].d=M.data[p].d; q++; } } } voidFastTranMat(TSMatrixM,TSMatrix&T) {//采用三元组表存储表示,快速算法求矩阵M的转置矩阵T //本算法的时间复杂度是线性的,比如O(nu+tu). //请同学们写出本算法。 } 参考解答: 10分 voidFastTranMat(TSMatrixM,TSMatrix&T) { inti,j; intk,q; T.rows=M.cols;T.cols=M.rows;T.nums=M.nums; if(T.nums) { for(i=0;i for(j=0;j cpot[0]=0; for(i=1;i for(j=0;j { k=M.data[j].c;q=cpot[k]; T.data[q].r=M.data[j].c; T.data[q].c=M.data[j].r; T.data[q].d=M.data[j].d; ++cpot[k]; } } } 如果学生写出其他某种正确的算法,时间复杂度也是线性的,也可以哦。 3. typedefstructLNode{ chardata;//数据域 structLNode*next;//指针域 }LNode,*LinkList; 请写出在带头结点的单循环链表head中查找第i个位置元素的值,将该值存放于x中的运算。 voidFindLinkList(LinkList&head,inti,char&x){ p=head;j=0; if(i<=0){printf(“查找位置错误! ”);return;} while(p->next! =head&&jnext;++j;} if(j==i)x=p->data; elseprintf(“没找到! ”); return; } 4.(6分)二叉树采用二叉链表存储结构,每个结点结构如下: (1)写出该结点结构的定义。 (2)写出二叉树的先序遍历递归算法: voidPreOrder(BiTreeT,void(*visit)(TElemType&e)) 参考解答 (1)3分 typedefstructBiTNode{ TElemTypedata; structBiTNode*lchild;//左孩子指针 structBiTNode*rchild;//右孩子指针 }BiTNode,*BiTree; (2)3分 voidPreOrder(BiTreeT,void(*visit)(TElemType&e)) {//先序遍历二叉树 if(T){ visit(T->data); //访问根结点 PreOrder(T->lchild,visit); //遍历左子树 PreOrder(T->rchild,visit); //遍历右子树 }elsereturn; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构期末考试补充复习题 数据结构 期末考试 补充 复习题