数据结构试题2009~2010年度

更新时间:2023-12-21 09:54:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

学生姓名__________ 学号_________________院系___________ 班级___________

-------------------------------密------------------------------封----------------------------线---------------------------------

烟台大学20 10 ~20 11 学年第 二 学期

数据结构 试卷B

(考试时间为120分钟)

题号 得分 阅卷人 一 二 三 四 五 合分人 总分 (注:第三大题答案请写在后面的空白答题纸上) 一、单项选择题(每小题2分,共20分)

1.若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为( )

A.顺序存储结构 B.链式存储结构 C.索引存储结构 D.散列存储结构 2.在长度为n的顺序表的第i (1≤i≤n+1)个位置上删除一个元素,元素的移动次数为( ) A.n-i+1 B.n-i C.i D.i-1 3.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( )

A.顺序表 B.用头指针表示的单循环链表 C.用尾指针表示的单循环链表 D.单链表 4.若进栈序列为a,b,c,则通过入出栈操作可能得到的a,b,c的出栈的不同排列个数为( ) A.4 B.5 C.6 D.7 5.已给下图1,哪一项是该图的拓扑排序序列 ① ( ) ② ③

④ ⑤

(图1)

A.1,2,3,4,5 B.1,3,2,4,5 C.1,2,4,3,5 D.1,2,3,5,4

6. 一组记录的值为(12,38,35,25,74,50,63,90),按2路归并排序方法对序列进行一趟归并后的结果为( )。 A.12,38,25,35,50,74,63,90 B.12,38,35,25,74,50,63,90 C.12,25,35,38,50,74,63,90 D.12,35,38,25,63,50,74,90 7.n个顶点的有向图中含有向边的数目最多为 ( )

A.n-1 B.n C.n(n-1)/2 D.n(n-1)

8.AVL树是一种平衡的二叉排序树,树中任一结点的( )

A.左、右子树的高度均相同 B.左、右子树高度差的绝对值不超过1 C.左子树的高度均大于右子树的高度 D.左子树的高度均小于右子树的高度 9.设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。 A.5 B.6 C.7 D.8 10.为查找某一特定单词在文本中出现的位置,可应用的串运算是( )

A.插入 B.删除 C.串联接 D.子串定位

二、填空题(每小题2分,共20分)

1. 存储结构是逻辑结构的__________实现。

2. 若一个算法中的语句频度之和为T(n)=n+4nlogn,则算法的时间复杂度为________。

3. 设二维数组A[1..10,1..20]按行优先顺序存储,每个元素占4个存储单元,A[1,1]的存储地址是1000,则A[5,6]的存储地址是 。

4. 在无向图的邻接矩阵A中,若A〔i,j〕等于1,则A〔j,i〕等于________。 5.在具有n个单元的循环队列中,队满时共有__ _______个元素。

6.在序列(2,5,8,11,15,16,22,24,27,35,40)中采用折半查找查找元素24,需进行 次元素之间的比较。 7.深度为h的完全二叉树至少有_________个结点,至多有_________个结点。 8.直接插入排序需要_________个记录的辅助空间。

9.在直接插入排序和快速排序中,若初始数据基本有序,则选用_直接插入________;在冒泡排序和堆排序中,若要求数据的稳定性,则选用_________。

10.广义表运算式TAIL(((a,b),(c,d))) 的运算结果为 。

三.应用题(每小题5分,共40分)

1. 设有序列(45,24,53,12,28,90),请构成一棵二叉排序树,并求其查找成功时的平均查找长度。

2. 对关键字序列(42,13,24,91,23,16,05,58)进行堆排序,使之按关键字递增次序排列,请写出排序过程中建初始堆的过程。

3. 已知散列表长度为11,散列函数为H(key)=key%9,处理冲突的方法为拉链法,请画出依次插入关键字(8,10,14,19,21,23,28,32,48)以后的散列表。

4. 已知某二叉树按中序遍历次序是BDCEAFHG,按后序遍历次序是 DECBHGFA,试画出该二叉树的形状,并写出它的前序扫描序列。

5. 以数据集(7,19,2,6,32,3,21,10)为叶结点的权值,构造一棵哈夫曼树。 6. 已给无向图如图2所示,用Prim算法画出该图从顶点1开始的最小生成树。 A 6 2 1 1 2 3 C B 5 10 3 2 3 4 D E F G 4 5 6 7 8 H (图2)

5 6 (图4)

(图3)

7. 无向图如图3所示,要求:写出该图从顶点1开始的广度优先和深度优先搜索序列。 8. 将图4所示的二叉树转化为森林。

四.算法设计题(共2小题,共20分)

1. 设有两个栈s1和s2共享同一数组存储空间stack[m],请编写栈s1和s2的进栈操作push(i,x)和退栈操作pop(i), 其中i=1、2,分别表示栈s1和s2。要求:仅当整个空间stack[m]占满时才产生上溢。(10分)

2.写出求一棵二叉树的叶子结点个数的算法。二叉树的存储结构为二叉链表,要求写出二叉链表的类型定义。(10分)

烟台大学20 10 ~20 11 学年第 二 学期 数据结构试卷B参考答案及评分标准 考试方式: 闭卷 (开卷、闭卷、其他) 院系: 计算机学院 年级: 02级专 专业: 计算机 …………………………………………………………………………………………….. 注:标准答案、参考答案要点及评分标准须写清题号、每小题得分、共得分等。 此格式为题头,如本页不够,后面请附相同规格(A4)的纸张。 …………………………………………………………………………………………….. 一、选择题(每小题2分,共20分) 1.D 2.B 3.C 4.B 5.A 6.A 7.D 8.B 9.A 10.D 二、填空题(每小题2分,共20分) 1. 物理 2. nlogn 3. 1260 4. 1 5. n-1 6. 4 7. 2h-1 、2h-1 8. O(1) 9. 直接插入、冒泡 . 10.((c,d)) 三、应用题(每小题5分,共40分) 1. 45 24 12 28 53 90 ASLsucc=(1*1+2*2+3*3)/6=7/3 2. 13 91 58 0 1 42 42 24 91 23 16 05 58 13 ∧ 10 19 91 24 05 13 42 58 24 05 23 16 23 16 28 ∧ 3. 2 ∧ 3 21 48 ∧ 查找成功时的 5 ASLsucc?(1*4?3*2?3*2)10?9 14 2332 ∧ 4 6 7 8 9 ∧ ∧ ∧ 08∧ ∧ 查找不成功时的 ∧ ASLun?(1?4?1?3?1?4?1?1?2?1?1)11?20/11 10 4. 5. A F B 前序序列:ABCDEFGH 2 3 6 9 10 D C E G H 32 19 21 6. 2 2 1 1 2 1 2 2 1 4 5 4 4 6 2 1 2 3 5 3 4 5 6 7 7. 深度优先遍历序列:123564 广度优先遍历序列:123456 2 6 3 5 1 2 2 6 3 3 4 6 8. A C G E B F H D 四.算法设计题(共2小题,共20分) 1. void pushi(SqStack st,int i,int e) {//入栈 if(st.top1==st.top2-1) printf(\栈已满\//栈满时的条件 else if(i==1) {st.top1++; st.data[st.top1]=e;} //入第一个栈 else if(i==2) {st.top2--; st.data[st.top2]=e;} //入第二个栈 } DataType popi(SqStack st,int i) {//出栈 if(i==1) if(st.top1==0) printf(\栈1空\else {x=st.data[top1]; st.top1--; return x; }//栈1元素出栈 else if(i==2) if(st.top2==M+1) printf(\栈2空\ else {x=st.data[top2]; st.top2++; return x; }//栈2元素出栈 } (入栈出栈各5分) 2. //二叉树的二叉链表表示 typedef struct BINTREENODE { ElemType data; struct BINTREENODE *lchild, rchild; } BitNode,*BitTree //答对给2分 int LeafCount(BitTree T) {//求二叉树中叶子结点的数目 if(!T) return 0; //空树没有叶子 else if(!T->lchild&&!T->rchild) return 1; //叶子结点 else return LeafCount(T->lchild)+LeafCount(T->rchild); //左子树叶子数加上右子树叶子数 }

本文来源:https://www.bwwdw.com/article/n8a5.html

Top