数据结构C++版一般的考试形式是什么?

如题所述

考试形式闭卷,考试题型一般有:选择题,简答题,程序分析题,程序解答题。

给你一套模拟题吧,练练手:

模拟试题(一)

一、单项选择题(每小题 2 分,共20分)
(1)以下数据结构中哪一个是线性结构?(   )
A)有向图    B)队列 C)线索二叉树    D)B树
(2)在一个单链表la中,若要在当前由指针p指向的结点后面插入一个由q指向的结点,则执行如下(   )语句序列。
A)p=q; p->next=q; B)p->next=q; q->next=p;
C)p->next=q->next; p=q; D)q->next=p->next; p->next=q;
(3)(   )不是队列的基本运算。
A)在队列第i个元素之后插入一个元素 B)从队头删除一个元素
C)判断一个队列是否为空 D)读取队头元素的值
(4)字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成(   )个不同的字符串。
A)14 B)5    C)6    D)8
(5)由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为(   )。
A)11 B)35 C)19 D)53
以下6-8题基于下图:

(6)该二叉树结点的前序遍历的序列为(   )。
A)E、G、F、A、C、D、B B)E、A、G、C、F、B、D
C)E、A、C、B、D、G、F D)E、G、A、C、D、F、B
(7)该二叉树结点的中序遍历的序列为(   )。
A)A、B、C、D、E、G、F B)E、A、G、C、F、B、D
C)E、A、C、B、D、G、F D)B、D、C、A、F、G、E
(8)该二叉树的按层遍历的序列为(   )。
A)E、G、F、A、C、D、B B)E、A、C、B、D、G、F
C)E、A、G、C、F、B、D D)E、G、A、C、D、F、B
(9)下面关于图的存储的叙述中正确的是(   )。
A)用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关
B)用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关
C)用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关
D)用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关
(10)设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建堆的结果?(   )
A)a,g,h,m,n,p,q,x,z B)a,g,m,h,q,n,p,x,z C)g,m,q,a,n,p,x,h,z D)h,g,m,p,a,n,q,x,z
二、(每小题4分,共8分)
已知一个6´5稀疏矩阵如下所示,试:
(1)写出它的三元组线性表;
(2)给出三元组线性表的顺序存储表示。
三、(本题8分)
求网的最小生成树有哪些算法?它们的时间复杂度分别下多少,各适用何种情况?
四、(每小题4分,共8分)
对于如下图所示的有向图若存储它采用邻接表,并且每个顶点邻接表中的边结点都是按照终点序号从小到大的次序链接的,试写出:
(1)从顶点v1出发进行深度优先搜索所得到的深度优先生成树;
(2)从顶点v2出发进行广度优先搜索所得到的广度优先生成树。

五、(本题8分)
已知一个图的顶点集V和边集E分别为:
V={1,2,3,4,5,6,7};
E={<2,1>,<3,2>,<3,6>,<4,3>,<4,5>,<4,6>,<5,1>,<5,7>,<6,1>,<6,2>,<6,5>};
试画出此图的图形,给出所有可能的拓扑排序序列。
六、(本题8分)
对于序列{8,18,6,16,29,28},试写出堆顶元素最小的初始堆。
七、(本题8分)
一棵二叉树的先序、中序和后序序列分别如下,其中有一部分未显示出来。试求出空格处的内容,并画出该二叉树。
先序序列: B F ICEH G
中序序列:D KFIA EJC
后序序列: K FBHJ G A
八、(每小题2分,共8分)
设有序列:w={23,24,27,80,28},试给出:
(1)二叉排序树;
(2)哈夫曼树;
(3)平衡二叉树;
(4)对于增量d=2按降序执行一遍希尔排序的结果。
九、(本题9分)
有关键字序列{7,23,6,9,17,19,21,22,5},Hash函数为H(key)=key % 5,采用链地址法处理冲突,试构造哈希表。
十、(本题15分)
假设二叉树中每个结点所含数据元素均为单字母,以二叉链表为存储结构,试编写算法按如下图所示的树状显示二叉树。

模拟试题(一)参考答案

一、单项选择题
(1)B (2)D (3)A (4)B (5)B
(6)C (7)A (8)C (9)B (10)B
二、(每小题4分,共8分)
(1)((1,5,1),(3,2,-1),(4,5,-2),(5,1,5),(6,3,7))
(2)三元组线性表的顺序存储表示如下所示:
三、(本题8分)
求网的最小生成树可使用Prim算法,时间复杂度为O(n2),此算法适用于边较多的稠密图,也可使用Kruskal算法,时间复杂度为O(eloge),此算法适用于边较少的稀疏图。
四、(每小题4分,共8分)
(1)DFS:v1 v2 v3 v4 v5
(2)BFS:v2 v3 v4 v5 v1
五、(本题8分)
图形表示如下图所示:
拓扑排序为:4362517,4362571,4365721,4365217,4365271
六、(本题8分)
所构造的堆如下图所示:

七、(本题8分)
在先序序列空格中依次填ADKJ,中序中依次填BHG,后序中依次填DIEC。
二叉树如下:
八、(每小题2分,共8分)
(1)二叉排序树如下图所示:

(2)哈夫曼树如下图所示:

(3)平衡二叉树如下图所示:

(4)对于增量d=2按降序执行一遍希尔排序的结果:28,80,27,24,23
九、(本题9分)
哈希表如下图所示:
十、(本题15分)
从上图来看,二叉树的第一层显示在第一列,第二层显示在第二列,第三层显示在第三列;每行显示一个结点,从上至下是先显示右子树,再显示根,最后最左子树,也就是以先遍历右子树,最后遍历左子树的中序遍历次序显示各结点。
具体算法实现如下:

// 文件路径名:exam1\alg.h
template <class ElemType>
void DisplayHelp(BinTreeNode<ElemType> *r, int level)
// 操作结果:按树状形式显示以r为根的二叉树,level为层次数,可设根结点的层次数为1
{
if(r != NULL)
{ // 空树不显式,只显式非空树
DisplayHelp<ElemType>(r->rightChild, level + 1); // 显示右子树
cout << endl; // 显示新行
for(int i = 0; i < level - 1; i++)
cout << " "; // 确保在第level列显示结点
cout << r->data; // 显示结点
DisplayHelp<ElemType>(r->leftChild, level + 1); // 显示左子树
}
}

template <class ElemType>
void Display(const BinaryTree<ElemType> &bt)
// 操作结果:树状形式显示二叉树
{
DisplayHelp<ElemType>(bt.GetRoot(), 1); // 树状显示以bt.GetRoot()为根的二叉树
cout << endl; // 换行
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-08
我们大学的考试形式是:选择题,简答题,程序填空题,编写程序题,
好好看书,,,考试轻松就过去了
第2个回答  2012-08-04
算法实现