数据结构(C++)第二次作业答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构第二次作业答案

一.单项选择题(20分)

( )1.一棵左子树为空的二叉树在前序线索化后,其空指针域数为 C

a、0

b、1

c、2

d、不确定

( )2.下列排序算法中,___D_____算法可能会出现下面的情况:初始数据有序时,花费的时间反而更长。

a、堆排序

b、起泡排序

c、直接选择排序

d、快速排序

( )3.在图采用邻接表存储时,求最小生成树的prim算法的时间复杂度是__B_____。

a.O(n*e)

b. O(n+e)

c. O(n2)

d.O(n3)

( )4.下面程序段的时间复杂度是__A______。

i=1;

while(i<=n) i++;

a. O(n)

b. O(n2)

c. O(2n)

d. O(log2n)

( )5.在有n(>0)个结点且为完全二叉树的二叉排序树中查找一个键值,其平均比较次数的数量级为____B______。

a. O(n)

b. O(log2n)

c. O(nlog2n)

d. O(n2)

( )6.采用分块查找时,若线性表中共有625个元素,查找每个元素的概率相同,假设采用顺序查找来确定结点所在的块时,每块应分为__B_____个结点最佳。

a. 10

b. 25

c. 6

d. 625

( )7.排序算法的稳定性是指__A____。

a.经过排序之后,能使值相同的数据保持原顺序中的相对位置不变

b.经过排序之后,能使值相同的数据保持原顺序中的绝对位置不变

c.算法的排序性能与被排序元素的数量关系不大

d.算法的排序性能与被排序元素的数量关系密切

( )8.某二叉树的先序序列和后序序列正好相反,则该二叉树一定是___B____的二叉树。

a. 空或只有一个结点

b. 高度等于其结点数(空树高度为0)

c. 任一结点无左孩子

d. 任一结点无右孩子

( )9.已知有向图G=(V,E)其中V={ V1 V2 V3 V4 V5 V6

V7},E={,,,,,,,,}为

__A_______。

a. V1 V3 V4 V6 V2 V5 V7

b. V1 V3V2 V6 V4 V5 V7

c. V1 V2 V3 V4 V5 V6 V7

d. V1 V2 V5 V3 V4 V6 V7

( )10.下列关于AOE网的叙述中不正确的是__D______。

a. 关键活动不按期完成会影响整个工程的完成时间

b. 所有的关键活动提前完成,那么整个工程将会提前完成

c. 某些关键活动若提前完成,那么整个工程将会提前完成

d. 任一关键活动提前完成,那么整个工程将会提前完成

二.填空作图简答题(共64分):

1.将算术表达式((a+b)+c*(d+e)+f)*(g+h)转化为二叉树,并写出其前序序列。

二叉树略

前序序列:*+++ab*c+def+gh

2.有一组关键码序列{10,20,60,47,50,45,95,33,75},采用Shell排序方法从小到大进

行排序,假设其间隔序列为5,3,1,请写出每趟的结果。

请按照下面的图例完成此题:

3.对下面的3阶B树依次插入关键码80,26,6,画出插入三个关键码后并删除关键码40后的

结果。

4.用Prim算法求下图的最小生成树, 若从顶点0出发,请将算法中的两个辅助数组的变化过程填

入下表。

辅助数组lowcost辅助数组nearvex

选出第1条边

选出第2条边

选出第3条边

选出第4条边

选出第5条边

选出第6条边

选出第7条边

5.求出下图中顶点A到其余个顶点的最短路径和最短路径长度。

AE=10; AF=17; AB=19; AG=25; AC=26; AD=27; AH=28

6. 已知报文为afecdaceadabdefbedeebcdefdede ,试设计其赫夫曼编码并画出相应的赫夫曼树。

a :2;

b :4;

c :

3;d :6;e :7;

7.

设初始归并段为(10,15,31,∞),(9,20, ∞),(22,34,37, ∞),(6,15,42, ∞),(12,37,

∞),(84,95, ∞),试利用败者树进行6路归并,画出选出最小的2个关键码的过程。

8. 已知哈希表地址空间为0~8,哈希函数为H(key)=key % 7,采用线性探查法处理冲突。将数据

(100,20,21,35,3,78,99,45)依次存入该散列表中,并计算等概率下查找不成功时的平均查找长度。 等概率下查找不成功时的平均查找长度:__ (1+2+3+4+5+6+7+8+9)/7=45/7___ 三. 程序填空(16分)

下面是仅给出了部分操作的二叉搜索树类的定义和实现。试在程序的每一划线部分填入一条语句或表达式,完成将元素x 插入到二叉树的操作。 class BinNode { public:

int data;

BinNode* leftchild, * rightchild;

BinNode() { leftchild = rightchild = NULL; }

};

class BinTree {

private:

BinNode* root;

void clearhelp(BinNode* rt) { if (rt == NULL) return;

clearhelp(rt->leftchild); clearhelp(rt->rightchild); delete rt; } public:

BinTree() { root = NULL; }

~BinTree() {clearhelp(root);}

void insert(const int x) ; //元素x 插入到二叉树

};

void BinTree :: insert(const int x) //元素x 插入到二叉树

{ BinNode *i, *j, *k;

①i=new BinNode ;

i->data = x;

if ( ②root==Null ) root = i; else

{ j = root;

while ( ③j!=Null )

{ k = j;

if ( ④x>j->data 或i->data>j->data ) j = j->rightchild;

else if(x==j->data) return;

else j = j->leftchild;

}

if ( x > k->data ) k->rightchild = i;

else k->leftchild = i;

}

}

相关文档
最新文档