二次作业答案_精品文档_精品文档Word文档下载推荐.doc

上传人:b****2 文档编号:13275302 上传时间:2022-10-09 格式:DOC 页数:9 大小:60.50KB
下载 相关 举报
二次作业答案_精品文档_精品文档Word文档下载推荐.doc_第1页
第1页 / 共9页
二次作业答案_精品文档_精品文档Word文档下载推荐.doc_第2页
第2页 / 共9页
二次作业答案_精品文档_精品文档Word文档下载推荐.doc_第3页
第3页 / 共9页
二次作业答案_精品文档_精品文档Word文档下载推荐.doc_第4页
第4页 / 共9页
二次作业答案_精品文档_精品文档Word文档下载推荐.doc_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

二次作业答案_精品文档_精品文档Word文档下载推荐.doc

《二次作业答案_精品文档_精品文档Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《二次作业答案_精品文档_精品文档Word文档下载推荐.doc(9页珍藏版)》请在冰豆网上搜索。

二次作业答案_精品文档_精品文档Word文档下载推荐.doc

元素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)q=q->

lLink

(2)return1

(3)return0

1→2

1→3

2→3

4.

(1)returnPT

(2)(PT=ParentPtr(BT->

right,BT,X))

(3)returnNULL或return0

六、算法设计题

floatpoly(floatx,floatA[],intn){

if(!

n)returnA[0];

elsereturnx*poly(x,A,n-1)+A[n];

}

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;

}

}

intBTreeLeafCount(BinTreeNode*BT)

if(BT==NULL)return0;

elseif(BT->

left==NULL&

&

BT->

right==NULL)return1;

elsereturnBTreeLeafCount(BT->

left)+BTreeLeafCount(BT->

数据结构第三次作业答案

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,5,6,4,3,2

(2)1,5,3,2,6,4

顶点:

0123456

路径长度:

0161014252131

拓扑序列:

1,3,6,0,2,5,4,7

所有关键活动:

<

0,1>

5,<

1,3>

10,<

3,4>

9,<

4,5>

12

关键路径长度:

36

(1)归并路数:

5

(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=é

log1480ù

=2。

即至少需2趟归并可完成排序。

算法功能:

当BT中每个结点的左子女的值大于右子女的值则交换左右子树。

(1)’t’

(2)’g’

(3)’g’

(4)’e’

{35,54,42,73,80,38}

判断p2单链表所代表的集合是否为p1单链表所代表的集合的子集合,若是则返回1否则返回0。

判断二叉树bt是否为一棵二叉搜索树,若是则返回1否则返回0。

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;

另一个参考答案:

//若两棵树均为空或实际上是同一棵树时返回1表示相等

if(T1==T2)return1;

if(T1==NULL||T2==NULL)return0;

//若根结点值不等返回0表示不等

if(T1->

data!

=T2->

data)return0;

//若根结点值相等则两棵树是否相等取决于它们的左、右子树是否对应相等

returnBTreeEqual(T1->

BTreeEqual(T1->

BinTreeNode*BTreeCopy(BinTreeNode*BT)

if(BT==NULL)returnNULL;

else{

//得到新结点

BinTreeNode*pt=newBinTreeNode;

//复制根结点值

pt->

data=BT->

data;

//复制左子树

left=BTreeCopy(BT->

//复制右子树

right=BTreeCopy(BT->

//返回新树的树根指针

returnpt;

说明:

函数体中的else可以没有

intBinSearch(ElemTypeR[],intn,KeyTypeK)

{

intlow=0,high=n-1;

while(low<

=high)

{

intmid=(low+high)/2;

if(K==R[mid].key)returnmid;

elseif(K<

R[mid].key)high=mid-1;

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.错

(0)[362525*624053]

(1)[25*25]36[624053]

(2)25*2536[5340]62

(3)25*2536405362

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1