二次作业答案_精品文档_精品文档.doc
- 文档编号:346181
- 上传时间:2022-10-09
- 格式:DOC
- 页数:9
- 大小:60.50KB
二次作业答案_精品文档_精品文档.doc
《二次作业答案_精品文档_精品文档.doc》由会员分享,可在线阅读,更多相关《二次作业答案_精品文档_精品文档.doc(9页珍藏版)》请在冰豆网上搜索。
数据结构第二次作业答案
一、单项选择题
1.C2.B3.A4.A5.D6.A
7.D8.C9.D10.C11.D12.C13.A
二、填空题
1.存储2.先进先出3.栈顶指针4.队尾
5.一6.局部变量7.表尾8.重数
9.310.611.612.2h+1-1
三、判断题
1.错2.对3.对4.对5.错6.对7.对8.错9.错
四、运算题
1.
叶子结点数:
5
单分支结点数:
3
两分支结点数:
2
三分支结点数:
1
2.
元素3456586394
比较次数21344
3.
左子树为空的所有单支结点:
15,23,42,44
右子树为空的所有单支结点:
30
4.
插入时造成不平衡的结点个数:
4
5.
结点abcde
出度11212
入度22111
6.
(1)1,3,4,6,5,2(3分)
(2)1,3,2,4,5,6(3分)
五、算法分析题
1.
利用"栈"作为辅助存储,将队列中的元素逆置(即相反次序放置)。
2.
(1)q=q->lLink
(2)return1
(3)return0
3.
1→2
1→3
2→3
4.
(1)returnPT
(2)(PT=ParentPtr(BT->right,BT,X))
(3)returnNULL或return0
六、算法设计题
1.
floatpoly(floatx,floatA[],intn){
if(!
n)returnA[0];
elsereturnx*poly(x,A,n-1)+A[n];
}
2.
intBTreeHeight(BinTreeNode*BT)
{
if(BT==NULL)
//对于空树,返回-1并结束递归
return–1;
else
{
//计算左子树的高度
inth1=BTreeHeight(BT->left);
//计算右子树的高度
inth2=BTreeHeight(BT->right);
//返回树的高度
if(h1>h2)returnh1+1;
elsereturnh2+1;
}
}
3.
intBTreeLeafCount(BinTreeNode*BT)
{
if(BT==NULL)return0;
elseif(BT->left==NULL&&BT->right==NULL)return1;
elsereturnBTreeLeafCount(BT->left)+BTreeLeafCount(BT->right);
}
数据结构第三次作业答案
一、单项选择题
1.D2.A3.B4.C5.C6.A
7.B8.C9.C10.A11.A12.D13.C
二、填空题
1.2i+12.最大值3.20.54.右子树5.1
6.右单旋转7.2(n-1)8.29.n-110.高11.直接插入
三、判断题
1.错2.对3.对4.对5.错6.对7.错8.对
四、运算题
1.
(1)1,5,6,4,3,2
(2)1,5,3,2,6,4
2.
顶点:
0123456
路径长度:
0161014252131
3.
拓扑序列:
1,3,6,0,2,5,4,7
4.
所有关键活动:
<0,1>5,<1,3>10,<3,4>9,<4,5>12
关键路径长度:
36
5.
(1)归并路数:
5
(2)需要归并躺数:
2
答案解释:
(1)设归并路数为k,初始归并段个数m=80,根据归并趟数计算公式S=élogkmù=élogk80ù=3得:
k3≥80。
由此解得k≥5,即应取的归并路数至少为5。
(2)设多路归并的归并路数为k,需要k个输入缓冲区和1个输出缓冲区。
1个缓冲区对应1个文件,有k+1=15,因此k=14,可做14路归并。
由S=élogkmù=élog1480ù=2。
即至少需2趟归并可完成排序。
五、算法分析题
1.
算法功能:
当BT中每个结点的左子女的值大于右子女的值则交换左右子树。
2.
(1)’t’
(2)’g’
(3)’g’
(4)’e’
3.
{35,54,42,73,80,38}
4.
判断p2单链表所代表的集合是否为p1单链表所代表的集合的子集合,若是则返回1否则返回0。
5.
算法功能:
判断二叉树bt是否为一棵二叉搜索树,若是则返回1否则返回0。
六、算法设计题
1.
intBTreeEqual(BinTreeNode*T1,BinTreeNode*T2)
{
//若两棵树均为空则返回1表示相等
if(T1==NULL&&T2==NULL)return1;
//若一棵为空一棵不为空则返回0表示不等
elseif(T1==NULL||T2==NULL)return0;
//若根结点值相等并且左、右子树对应相等则两棵树相等
elseif(T1->data==T2->data&&BTreeEqual(T1->left,T2->left)&&
BTreeEqual(T1->right,T2->right))
return1;
//若根结点值不等或左、右子树对应不等则两棵树不等
else
return0;
}
另一个参考答案:
intBTreeEqual(BinTreeNode*T1,BinTreeNode*T2)
{
//若两棵树均为空或实际上是同一棵树时返回1表示相等
if(T1==T2)return1;
//若一棵为空一棵不为空则返回0表示不等
if(T1==NULL||T2==NULL)return0;
//若根结点值不等返回0表示不等
if(T1->data!
=T2->data)return0;
//若根结点值相等则两棵树是否相等取决于它们的左、右子树是否对应相等
returnBTreeEqual(T1->left,T2->left)&&
BTreeEqual(T1->right,T2->right);
}
2.
BinTreeNode*BTreeCopy(BinTreeNode*BT)
{
if(BT==NULL)returnNULL;
else{
//得到新结点
BinTreeNode*pt=newBinTreeNode;
//复制根结点值
pt->data=BT->data;
//复制左子树
pt->left=BTreeCopy(BT->left);
//复制右子树
pt->right=BTreeCopy(BT->right);
//返回新树的树根指针
returnpt;
}
}
说明:
函数体中的else可以没有
3.
intBinSearch(ElemTypeR[],intn,KeyTypeK)
{
intlow=0,high=n-1;
while(low<=high)
{
intmid=(low+high)/2;
if(K==R[mid].key)returnmid;
elseif(K elselow=mid+1; } return-1; } 数据结构第四次作业答案 一、单项选择题 1.C2.B3.A4.C5.C6.C 7.C8.C9.B10.D11.C12.C 二、填空题 1.二路归并2.n/23.O(nlog2n)4.O(n2)5.3 6.关键码7.稀疏8.5009.n/m10.511.m-1 三、判断题 1.错2.错3.对4.对5.对6.错7.错8.错 四、运算题 1. (0)[362525*624053] (1)[25*25]36[624053] (2)25*2536[5340]62 (3)25*2536405362 2.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二次 作业 答案 精品 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)