共25套适用于计算机考研数据结构系统练习
(PS:其他正在整理,敬请期待)
数据结构试卷14
一、填空题
1、二维数组A[10][20]采用列序为主方式存储,每个元素占一个存储单元并且A[0][0]的存储地址是200,则A[6][12]的地址是____。
2、二维数组A[10..20][5..10]采用行序为主方式存储,每个元素占4个存储单元,并且A[10][5]的存储地址是1000,则A[18][9]的地址是____。
3、求下列广义表操作的结果:
(1) GetTail[GetHead[((a,b),(c,d))]];
(2) GetTail[GetHead[GetTail[((a,b),(c,d))]]]
4、已知一个有向图的邻接矩阵表示,计算第i个结点的入度的方法是____。
5、已知一个图的邻接矩阵表示,删除所有从第i个结点出发的边的方法是____。
6、在利用快速排序方法对一组记录(54,38,96,23,15,72,60,45,83)进行快速排序时,递归调用而使用的栈所能达到的最大深度为____,共需递归调用的次数为____,其中第二次递归调用是对____一组记录进行快速排序。
7、在堆排序,快速排序和归并排序中,若只从存储空间考虑,则应首先选取____方法,其次选取____方法,最后选取____方法;若只从排序结果的稳定性考虑,则应选取____方法;若只从平均情况下排序最快考虑,则应选取____方法;若只从最坏情况下排序最快并且要节省内存考虑,则应选取____方法。
二、选择题
1、二分查和二叉排序树的时间性能【 】。
A. 相同 B. 不相同
2、采用二分查方法查长度为n的线性表时,每个元素的平均查长度为【 】。
A.O(n2) B. O(nlog2n) C. O(n) D. O(log2n)
3、在待排序的元素序列基本有序的前提下,效率最高的排序方法是【 】。
A. 插入排序 B. 选择排序 C. 快速排序 D. 归并排序
4、下述几种排序方法中,要求内存量最大的是【 】。
A. 插入排序 B. 选择排序 C. 快速排序 D. 归并排序
5、设有两个串p和q,求q在p中首次出现的位置的运算称作【 】。
A. 连接 B. 模式匹配
C. 求子串 D. 求串长
6、二维数组A中,每个元素A[i][j]的长度为3个字节,行下标i从0到7,列下标j从0到9,从首地址SA开始连续存放在存储器内,该数组按列存放时,元素A[4][7]的起始地址为【 】。
A. SA+141 B. SA+180 C. SA+222 D. SA+225
7、某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是【 】。
A. bdgcefha B. gdbecfha C. bdgaechf D. gdbehfca
8、在一非空二叉树的中序遍历序列中,根结点的右边【 】。
A. 只有右子树上的所有结点 B. 只有右子树上的部分结点
C. 只有左子树上的部分结点 D. 只有左子树上的所有结点
9、具有6个顶点的无向图至少应有【 】条边才能确保是一个连通图。
A. 5 B. 6 C. 7 D. 8
10、二分查和二叉排序树的时间性能【 】。
A. 相同 B. 不相同 C. 可能相同 D. 不确定
三、计算与算法应用题:
1. 已知一个有向图的顶点集V和边集G分别为:
V={a,b,c,d,e,f,g,h}
E={<a,b>,<a,c>,<b,f>,<c,d>,<c,e>,<d,a>,<d,f>,<d,g>,<e,g>,<f,h>};
假定该图采用邻接矩阵表示,则分别写出从顶点a出发进行深度优先搜索遍历和广度优先搜索遍历得到的顶点序列。
2. 设散列表的长度为13,散列函数为H(h)= k%13,给定的关键码序列为19,14,23,01,68,20,84,27。试画出用线性探查法解决冲突时所构成的散列表。
0 1 2 3 4 5 6 7 8 9 10 11 12
四、阅读下列算法,分析它的作用:
1. void AD(Lnode* & HL)
{
Insert(HL,30);
数据结构与算法分析答案 Insert(HL,50);
Delete(HL,26);
Delete(HL,55);
}
假定调用该算法时以HL为表头指针的单链表中的内容为(15,26,48,55),则调用返回后该单链表中的内容为:
______________________________。
2.
void AI(adjmatrrix GA,int i,int n)
{
cout<<i<<’’;
visted[i]=true;
for(int j=0;j<n;j++)
if(Ga[I][j]! =0&& GA[i][j]! =MaxValue&& ! visited[j])
AI(GA,j,n);
}
该算法的功能为:
_____________________________________________________________________。
五、算法设计
1. 已知深度为h的二叉树以一维数组BT(1:2h-1)作为其存储结构。请写一算法,求该二叉树中叶结点的个数。
2. 编写在以BST为树根指针的二叉搜索树上进行查值为item的结点的非递归算法,若查item带回整个结点的值并返回true,否则返回false。
bool Find(BtreeNode*BST,ElemType&item)
答案
一、填空
1. 200+(6*20+12)= 326
2. 1000+((18-10)*6 +(9-5))*4 = 1208
3. (1). (b) (2). (d)
4. 求矩阵第i列非零元素之和
5. 将矩阵第i行全部置为零
6. 2. 2; 4; (23,38,15)
7. 堆排序、快速排序、归并排序、归并排序、快速排序、堆排序
二、选择
1-5BBADB 6-10ABCBB
三、计算与算法应用题:
1、
平均长度为4.
8.
8.
深度优先搜索序列:a,b,f,h,c,d,g,e
广度优先搜索序列:a,b,c,f,d,e,h,g 7.
四、阅读下列算法,分析其作用
1. (15,30,48,50)
2. 从初始点vi出发深度优先搜索遍历由邻接距阵GA所表示的图
五、算法设计
1、二叉树采取顺序结构存储,是按完全二叉树格式存储的。对非完全二叉树要补上“虚结点”。由于不是完全二叉树,在顺序结构存储中对叶子结点的判定是根据其左右子女为0。叶子和双亲结点下标间的关系满足完全二叉树的性质。
int Leaves(int h) //求深度为h以顺序结构存储的二叉树的叶子结点数
{int BT[]; int len=2h-1, count=0; //BT是二叉树结点值一维数组,容量为2h
for (i=1;i<=len;i++) //数组元素从下标1开始存放
if (BT[i]!=0) //假定二叉树结点值是整数,“虚结点”用0填充
if(i*2)>len) count++; //第i个结点没子女,肯定是叶子
else if(BT[2*i]==0 && 2*i+1<=len && BT[2*i+1]==0)
count++; //无左右子女的结点是叶子
return (count)
} //结束Leaves
8.
bool Find(BtreeNode*BST,ElernType&item)
{
while(BST!=NULL)
{
if(item= =BST一>data){item=BST一>data; return true;}
else if(item<BST一>data=BST=BST一>left;
else BST=BST一>right;
}
return false;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论