数据结构作业答案大连理工大学.docx
- 文档编号:2280767
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:15
- 大小:110.69KB
数据结构作业答案大连理工大学.docx
《数据结构作业答案大连理工大学.docx》由会员分享,可在线阅读,更多相关《数据结构作业答案大连理工大学.docx(15页珍藏版)》请在冰豆网上搜索。
数据结构作业答案大连理工大学
作业1.线性表
编程作业:
1.将顺序表逆置,要求用最少的附加空间。
参考答案
#include<>
#include<>
#include<>
#defineLIST_INIT_SIZE100
#defineLISTINCREMENT10
#defineTRUE1
#defineFALSE0
#defineOK1
#defineERROR0
#defineINFEASIBLE-1
#defineOVERFLOW-2
typedefintStatus;
typedefintElemType;
typedefstruct
{ElemType*elem;
intlength;
intlistsize;
}SqList;
立单链表");
printf("2.取元素值");
printf("3.查找\n");
printf("4.插入");
printf("5.删除");
printf("6.显示\n");
printf("7.删除大于mink且小于maxk的元素值");
printf("8.就地升序排序\n");
printf("9.就地逆置");
printf("a.有序表插入");
printf("q.退出\n");
printf("\n请选择操作:
");
fflush(stdin);
scanf("%c",&choice);
switch(choice)
{
case'1':
printf("请输入单链表中结点个数:
");
scanf("%d",&n);
Create_L2(L,n);
break;
case'2':
printf("请输入元素位序:
");
scanf("%d",&i);
GetElem_L(L,i,e);
printf("元素值为:
%d\n",e);
break;
case'3':
printf("请输入要查找的元素:
");
scanf("%d",&e);
if(dlbcz(L,e))
printf("查找成功!
");
else
printf("查找失败。
");
break;
case'4':
printf("请输入插入位置:
");
scanf("%d",&i);
printf("请输入要插入的元素:
");
scanf("%d",&e);
if(ListInsert_L(L,i,e))
printf("插入成功!
单链表为:
");
else
printf("插入失败。
");
break;
case'5':
printf("请输入删除位置:
");
scanf("%d",&i);
if(ListDelete_L(L,i,e))
printf("删除成功!
");
else
printf("删除失败。
\n");
break;
case'6':
printf("\n单链表为:
");
xsList(L);
break;
case'7':
printf("请输入mink和maxk:
");
scanf("%d,%d",&mink,&maxk);
DelList(L,mink,maxk);
break;
case'8':
sh_sort(L);
break;
case'9':
nizhi(L);
break;
case'a':
printf("请输入在有序表中插入的元素值:
");
scanf("%d",&e);
yxcharu(L,e);
break;
}
}
}
作业2.栈、队列、数组
非编程作业:
1.若进栈序列为ABCD,请写出全部可能的出栈序列和不可能的出栈序列。
参考答案:
可能的出栈序列:
(14种)
dcbacdbabacdcbdaadcbcbadbdcaacdbbcdaacbdbcadabdcbadcabcd
不可能的出栈序列:
(10种)
dbcadbacdabcdacbdcabcabdcdabbdaccadbadbc
2.简要说明循环队列如何判断队满和队空
参考答案:
当牺牲一个存储结点,约定以“队列头指针在队列尾指针的下一位置(指环状的下一个位置)上”作为队列“满”状态的标志时,循环队列判断队满的条件为:
(rear+1)%MaxQsize==front;判断队空的条件为:
front==rear。
3.设A为n阶对称矩阵,采用压缩存储存放于一维数组F[n(n+1)/2]中(从F[0]开始存放),请分别给出存放上三角阵时任一矩阵元素aij(1≤i,j≤n)的地址计算公式和存放下三角阵时任一矩阵元素aij(1≤i,j≤n)的地址计算公式。
参考答案:
存放上三角阵时,任一矩阵元素aij(1≤i,j≤n)的地址计算公式为:
存放下三角阵时,任一矩阵元素aij(1≤i,j≤n)的地址计算公式为:
4.写出下面稀疏矩阵的三元组顺序表和十字链表表示。
参考答案:
编程作业
栈采用顺序栈存储,试设计算法实现将表达式转换成后缀表达式输出。
例如,输入表达式:
a+b/c-(d*e+f)*g
输出其后缀表达式:
abc/+de*f+g*-
参考答案:
#include<>
#include<>
#include<>
#defineOVERFLOW-2
#defineOK1
#defineERROR0
#defineSTACK_INIT_SIZE100
#defineSTACKINCREMENT10
typedefintStatus;
typedefcharSElemType;
typedefcharstring[80];
typedefstruct
{SElemType*base;
SElemType*top;
intstacksize;
}SqStack;
StatusInitStack(SqStack&S)
{=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!
exit(OVERFLOW);
=;
=STACK_INIT_SIZE;
return(OK);
}
StatusClearStack(SqStack&S)
{=(SElemType*)realloc,STACK_INIT_SIZE*sizeof(SElemType));
if(!
exit(OVERFLOW);
=;
=STACK_INIT_SIZE;
return(OK);
}
voidDestroyStack(SqStack&S)
{=0;
iffree;
==NULL;
}
StatusStackEmpty(SqStackS)
{if==
returntrue;
else
returnfalse;
}
SElemTypeGetTop(SqStackS)
{SElemTypee;
if>
e=*;
returne;
}
StatusPush(SqStack&S,SElemTypee)
{
if树
非编程作业:
1.请分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。
参考答案:
具有3个结点的树:
具有3个结点的二叉树:
2.已知二叉树的先序遍历序列是EABDCFHGIKJ,中序遍历序列是ABCDEFGHIJK,请构造二叉树,并写出其层次遍历序列和后序遍历序列。
参考答案:
E
A
C
B
D
I
J
H
F
G
K
层次:
EAFBHDGICKJ
后序---CDBAGJKIHFE
3.将下图所示的森林转换成一棵二叉树。
参考答案:
B
A
C
D
F
G
E
H
I
J
K
L
转换成的二叉树为:
4.将下图所示的二叉树还原成树或森林。
参考答案:
转换为森林:
A
C
H
B
F
D
M
E
G
N
J
I
K
L
5.假设用于通信的电文由7个字母组成{A,B,C,D,E,F,G},字母在电文中出现的频率分别为、、、、、、。
试为这7个字母设计哈夫曼编码,并计算其带权路径长度WPL。
参考答案:
哈夫曼树为:
WPL=4*++3*+++2*+=
A:
101B:
001C:
100D:
0001E:
11F:
0000G:
01
编程作业:
二叉树采用二叉链表存储,试设计算法实现:
1.CreateBT(BiTree&T):
从键盘输入二叉树的先序遍历序列字符串(以”#”代表空结点),建立其二叉链表;
如输入:
AB#D##CE#F###则建立如下图所示二叉树的二叉链表
2.ExchangeBT(BiTreeT):
设计递归算法实现二叉树中所有结点的左右孩子交换;
3.CountLeaf(BiTreeT,TElemTypex,int&count):
统计以值为x的结点为根的子树中叶子结点的数目;
4.DispBiTree(BiTreeT,intlevel):
按树状打印二叉树。
B
C
F
A
E
D
打印得到:
#C
###F
##E
A
##D
#B
提示:
对于根为T,层次为level的子树:
1打印其下一层(level+1层)右子树;
2打印根结点;
3打印其下一层(level+1层)左子树;
*结点左边的’#’个数为其层次数*
参考答案:
#include<>
#include<>
typedefstructBiTNode{
chardata;
structBiTNode*lchild,*rchild;
}BiTNode,*BiTree;
图
非编程作业:
1.已知带权有向图如图所示,画出该图的邻接矩阵存储结构。
2.
2
aa
f
b
d
g
c
h
e
A
6
9
7
8
3
2
5
1
30
24
21
参考答案:
3.无向图邻接表存储结构如图所示:
(1)画出该无向图;
(2)写出在该邻接表上,从顶点1出发所得到的深度优先遍历(DFS)和广度优先遍历(BFS)序列。
参考答案:
1
3
2
4
7
5
8
6
DFS:
1,3,4,7,8,6,5,2
BFS:
1,3,2,4,7,6,5,8
作业5.查找、排序
非编程作业:
1.对下标为1~9的有序表进行折半查找,画出折半查找的判定树;并计算在等概率情况下查找成功的平均查找长度ASL。
参考答案:
2.设有关键字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 作业 答案 大连理工大学