数据结构第二次作业答案.docx
- 文档编号:28446732
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:14
- 大小:23.56KB
数据结构第二次作业答案.docx
《数据结构第二次作业答案.docx》由会员分享,可在线阅读,更多相关《数据结构第二次作业答案.docx(14页珍藏版)》请在冰豆网上搜索。
数据结构第二次作业答案
数据结构第二次作业答案
一、单项选择题
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. (0)[30182015381244534618*2686] (1)[1830][1520][1238][4453][18*46][2686] (2)[15182030][12384453][18*264686] (3)[1215182030384453][18*264686] (4)[12151818*2026303844465386] 3. (1)(1*4+2*3+3)/8=13/8 (2)(3+4+2+1+1+3+1+1+1+1+1)/11=19/11 4. 散列表长度m至少为: 225 答案说明: 已知要存储的表项数为n=150,搜索成功的平均搜索长度为ASLsucc≤2,则有 ,解得 又有 ,则m≥225 5. 单关键码结点数: 1 双关键码结点数: 3 五、算法分析题 1. (1)0 (2)p=p->link (3)Degree[p->dest]++ 2. (1)s[j]=temp (2)seq[i] (3)Exchange(seq,low,pivotpos) 3. (1)dataList (2)currentSize (3)k=j 4. (0){302040106050} (1){203010405060} (2){201030405060} (3){102030405060} 六、算法设计题 1. intInsert(BinTreeNode*&BST,constElemType&item) { if(BST==NULL){//插入新结点 BinTreeNode*p=newBinTreeNode; p->data=item; p->left=p->right=NULL; BST=p; return1; } elseif(item==BST->data)return0;//不插入返回 elseif(item returnInsert(BST->left,item); else//向右子树插入元素 Insert(BST->right,item); } 2. c=0; for(j=0;j 数据结构第四次作业答案 一、单项选择题 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. (0)[30182015381244534618*2686] (1)[1830][1520][1238][4453][18*46][2686] (2)[15182030][12384453][18*264686] (3)[1215182030384453][18*264686] (4)[12151818*2026303844465386] 3. (1)(1*4+2*3+3)/8=13/8 (2)(3+4+2+1+1+3+1+1+1+1+1)/11=19/11 4. 散列表长度m至少为: 225 答案说明: 已知要存储的表项数为n=150,搜索成功的平均搜索长度为ASLsucc≤2,则有 ,解得 又有 ,则m≥225 5. 单关键码结点数: 1 双关键码结点数: 3 五、算法分析题 1. (1)0 (2)p=p->link (3)Degree[p->dest]++ 2. (1)s[j]=temp (2)seq[i] (3)Exchange(seq,low,pivotpos) 3. (1)dataList (2)currentSize (3)k=j 4. (0){302040106050} (1){203010405060} (2){201030405060} (3){102030405060} 3、怎样做才是解决垃圾问题最有效的方法呢? (P73)六、算法设计题 1. 23、我国是世界上公认的火箭的发源地,早在距今1700多年前的三国时代的古籍上就出现了“火箭”的名称。 intInsert(BinTreeNode*&BST,constElemType&item) 6、你还知道哪些环境问题? 它们都对地球造成了哪些影响? { 7、月球的明亮部分,上半月朝西,下半月朝东。 if(BST==NULL){//插入新结点 BinTreeNode*p=newBinTreeNode; 20、在观星过程中,我们看到的天空中有一条闪亮的“银河”光带,实际是由许许多多的恒星组成的一个恒星集团,被人们称为银河系。 我们生活的地球在银河系。 p->data=item; p->left=p->right=NULL; BST=p; return1; 5、铁生锈变成了铁锈,这是一种化学变化。 水分和氧气是使铁生锈的原因。 } elseif(item==BST->data)return0;//不插入返回 22、绿色植物的一些细胞能进行光合作用,制造养料,它们好像是一个个微小的工厂。 elseif(item returnInsert(BST->left,item); 答: 当月球运行到地球和太阳的中间,如果月球挡住了太阳射向地球的光,便发生日食。 else//向右子树插入元素 Insert(BST->right,item); } 2. 10、生物学家列文虎克于1632年出生在荷兰,他制成了世界上最早的可放大300倍的金属结构的显微镜。 他用自制的显微镜发现了微生物。 c=0; for(j=0;j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第二次 作业 答案