数据结构模拟题目

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

模拟题1
一、填空题
1.数据结构的基本单位是。

2.从存储结构上讲,线性表的表示可分为和链接两类。

3. 设顺序表长度为n,则删除第i(i = 1, 2, …, n)个元素需要移动个元素。

4. 后缀表达式20 10 5 * +49 7 / -的值为。

5. 一棵二叉树中,若叶结点的个数为2005,则度为2的结点个数为。

6.遍历一棵二叉搜索树,将得到一个以关键字值递增排列的有序序列。

7. 5阶B树的高度为2时,树中元素个数最少为。

8. 若有向图的拓扑排序不能输出所有的顶点,则该有向图存在。

二、单项选择题
1. 若用单链表来表示队列,则选用最好。

()
A. 只带尾指针的非循环链表
B. 只带尾指针的循环链表
C. 只带头指针的非循环链表
D. 只带头指针的循环链表
2. 设有一个二维数组A[m][n]按行优先顺序存储,假设A[0][0]的地址是644,A[2][2]的地址是676,每个元素占1个单元,则A[4][5]的地址是。

()
A. 672
B. 626
C. 709
D. 724
3. 森林的后序遍历等价于其对应二叉树的遍历。

()
A. 先序
B. 中序
C. 后序
D. 按层
4. 具有10个顶点的连通图的深度优先搜索生成树,其边的数目为。

()
A. 9
B. 10
C. 11
D. 8
5. 下列说法错误的是。

()
A. 已知先序和中序遍历序列能唯一确定一棵二叉树
B. 已知后序和中序遍历序列能唯一确定一棵二叉树
C. 已知先序和后序遍历序列能唯一确定一棵二叉树
D. 已知先序遍历序列能唯一确定一棵二叉搜索树
6. 下列排序算法中,第一趟排序后能确定某个元素最终位置的算法是。

()
A. 直接插入排序
B. 快速排序
C. 两路合并排序
D. 以上均不对
7. 散列表采用线性探查法解决冲突会出现现象。

()
A. 二次聚集
B. 探查失败
C. 假溢出
D. 线性聚集
三、简答题
1. 给定稀疏矩阵(如下图所示),请写出该矩阵执行快速转置时用到的num[]和k[]的值。

012940300008030020100240600180007⎡⎤
⎢⎥⎢
⎥⎢⎥-⎢
⎥⎢⎥⎢⎥⎣⎦
2. 表长为11的散列表采用双散列法解决冲突,散列函数 h 1(key)=key % 11,h 2(key)=key %
3. 写出下图所有可能的拓扑序列。

4. 使用普里姆(Prim )算法以A 为源点,构造下图的最小代价生成树,要求画出构造过程中各步的结果。

5. 以37,
45,25,14,91,43,27,26为输入序列构建二叉搜索树, ⑴ 画出该二叉搜索树;
⑵ 画出该二叉搜索树对应的森林。

6. 元素序列(60,21,19,7,15,28,4)按两路合并算法进行排序。

⑴ 写出各趟排序结果。

⑵ 两路合并排序平均情况下的渐近时间复杂度为多少?
7. 下图是一个三阶B-树,请画出依次删除50、10之后B-树。

8. 设字符集合S={A,E,I,O,U},各字符的使用频率为W={20,10,17,5,25}。

⑴画出哈夫曼树;(构建新树时,新树根的左子树根的权值小于等于右子树根的权值,新树根的值是左、右子树根结点权值之和)
⑵求该哈夫曼树的带权路径长度。

四、程序填空题
下面的程序是顺序表的对半搜索的迭代算法,请补充完整。

template <class T>
int SeqList<T>::BiSearch1(const T& x) const
{
int i, low=1,high=length;
while (low<=high)
{
i= ⑴ ;
if (x<elements[i-1]) ⑵ ;
else if (x>elements[i-1]) low=i+1;
else ⑶ ;
}
return 0;
}
五、程序阅读题
下面的程序是二叉树类的某个成员函数
template <class T>
void BTree<T>::A(BTNode<T> *p)
{ BTNode<T> *q;
if (p)
{
q = p->lchild;
p->rchild = q;
A(p->lchild);
A(p->rchild);
}
}
⑴请说明该成员函数的作用是什么?
⑵若指针p的指向如右上图所示,请画出执行该函数后的二叉树?
六、程序设计题(10分)
在单链表类SingleList中增加一个成员函数Print,输出单链表上所有大于x的元素。

(提示:单链表上的元素不是有序的;只要写出成员函数即可,注意成员函数的书写格式。


模拟题2
一、填空题
1.数据的逻辑结构是指。

2. AOV网中的领先关系是一种拟序关系,它具有传递性和。

3. 队列中,允许插入元素的一端称为。

4. 后缀表达式5 3 2 * 3 + 3 / +的值为。

5. 一棵有1927个结点的二叉树,所有结点的度之和为。

6.具有100个结点的完全二叉树的高度是。

7. 5阶B树中非失败结点的元素个数最多为。

8. 10个顶点的无向图中有4条边,若采用邻接矩阵表示,则矩阵中的非0元素个数
是个。

二、单项选择题
1. 线性表采用链表存储结构的特点是。

()
A. 结点的地址必须连续
B. 可以随机存取
C. 插入、删除操作不必移动元素
D. 需要事先估计所需存储空间
2. 设1、2、3三个元素依次进栈,则不可能是其出栈序列。

()
A. 1,2,3
B. 2,3,1
C. 3,2,1
D. 3,1,2
3. 对半搜索算法的条件是。

()
A. 顺序存储,元素有序
B. 顺序存储,元素无序
C. 链接存储,元素有序
D. 链接存储,元素无序
4. 高度为5的二叉树上,最多有个结点。

()
A. 5
B. 16
C. 31
D. 32
5. 二叉搜索树中,是关键字值最大的结点。

()
A. 先序遍历序列中的最后一个结点
B. 中序遍历序列中的最后一个结点
C. 后序遍历序列中的最后一个结点
D. 按层遍历序列中的最后一个结点
6. 有n个顶点的有向图中最多有条边。

()
A. n
B. n(n-1)
C. n(n+1)
D. n2
7. 下列算法中,在最坏情况下的渐近时间复杂度不高于O(nlog2n)。

()
A. 简单选择排序
B. 直接插入排序
C. 快速排序
D. 两路合并排序
三、简答题
1. 画出对长度为9的有序表进行对半搜索的二叉判定树,并求等概率搜索时成功搜索情况下的平均搜索长度。

2. 设有向图的邻接表如下所示,请写出该图的邻接矩阵,并且求出各个顶点的出度。

3. 设有向图如下图所示,请画出该图所有的强连通分量。

4. 使用普里姆(Prim)算法以A为源点,构造下图的最小代价生成树,要求画出构造过程中各步的结果。

5. 设一棵二叉树的先序遍历序列是ABDCEF,中序遍历序列是BDAECF,请画出该二叉树。

6. 已知二叉树如下图所示,请画出该二叉树对应的森林。

7. 下图是一个3阶B-树,请画出插入37之后的B-树,再画出在此基础上插入38后的B树。

8. 设字符集合S={A,B,C,D,E},各字符的使用频率为W={5,7,8,9,10}。

⑴画出哈夫曼树;(构建新树时,新树根的左子树根的权值小于等于右子树根的权值)
⑵求该哈夫曼树的带权路径长度。

四、程序填空题
下面是快速排序的程序,请补充完整。

template <class T>
void QSort(T A[], int left, int right)
{
int i,j;
if ( left<right )
{
i=left; j=right+1;
do
{
do {i++;} while ( );
do {j--;} while (A[j]>A[left]);
if (i<j) Swap(A[i], A[j]);
}while (i<j);
Swap (A[left], );
QSort (A, left, j-1);
QSort (A, j+1, );
}
}
五、程序阅读题
下面的程序是单链表类的某个成员函数
template <class T>
void SingleList<T>::A()
{
Node<T> *p=first,*q;
first=NULL;
while (p)
{
q=p->link;
first=p;
p=q;
}
}
⑴请说明该成员函数的作用是什么?
⑵若有单链表结构如右上图所示,请画出执行该函数后的单链表结构。

六、程序设计题
在带表头结点的单链表类HeaderList中增加一个成员函数
bool HeaderList<T>::Min(T &result) const
实现的功能是,若单链表为空,则函数返回false;否则,函数返回true,并且将所有结点
中的最小值保存在引用参数result中。

(不用声明HeaderList类,只要实现该成员函数即可。

)。

相关文档
最新文档