数据结构模拟试题一
- 格式:doc
- 大小:53.00 KB
- 文档页数:6
数据结构模拟试题一
一、单选题(每小题2分,共8分)
1、在一个长度为n的顺序存储的线性表中,删除第i个元素(1≤i≤n)时,需要从前向后依次前移 个元素。
A n-i B n- i十1
C n-j-1 C i
2、设一个广义表中结点的个数为n,则求广义表深度算法的时间复杂度为
。
A O(1) B O(n)
C O(n2) D O(1og2n)
3、假定一个顺序队列的队首和队尾指针分别为1和r,则判断队空的条件为
。
A f+ 1= =r B r+1= =f
C f= =0 D f= =r
4、从堆中删除一个元素的时间复杂度为 。
A O(1) B O(n)
C O(1og2n) D O(nlog2n)
二、填空题(每空1分,共32分)
1、在线性结构、树结构和图结构中,前驱和后继结点之间分别存在着
、
和 的联系。
2、在线性表的单链接存储中,若一个元素所在结点的地址为p,则其后继结点的地址为
,若假定p为一个数组a中的下标,则其后继结点的下标的
。
3、在初始化一个稀疏矩阵的函数定义中,矩阵形参应说明为 参数。
4、栈又称为 表,队列又称为 表。
5、后缀表达式“4 5+3*2 4+ *”的值为 。
6、一棵深度为5的满二叉树中的结点较为 个,一棵深度为3的满四叉树中的结点数为 个。 7、对于一棵含有40个结点的理想平衡树,它的高度为 。
8、从一棵二叉搜索树中查找一个元素时,若元素的值等于根结点的值,则表明
,若元素的值小于根结点的值,则继续向 查找,若元素的大于根结点的 查找。
9、当从一个小根堆中删除一个元素时,需要把
元素填补到 位置,然后再长条件把它逐层
调整。
10、对于一个具有n个顶点的图,若采用邻接炬阵表示,则矩阵大小为
。
11、对于一个具有n个顶点和e条边的连通图,其生成树中的顶点数和边数分别为
和 。
12、二分查找过程所对应的判定树既是一棵 ,又是一棵
。
13、若长度n=10000的线性表进行二级索引存储:每级索引表中的索引项是下一级20个记录的索引,则一级索引表的长度为 ,二级泵引表的长度为
。
14、在一棵20阶的B-树中,每个非树根结点的关键字数目最少为 个,最多为 个。
15、每次直接或通过基准元素间接比较两个元素,若出现逆序排列时就交换它们的位置,此种排序方法叫做 排序;每次使两个相邻的有序表合并成一个有序表的排序方法叫做 排序。
16、在归并排序中,进行每趟归并的时间复杂度为 ,整个排序过程的时间复杂度为 ,空间复杂度为 。
三、运算题。(每小题6分,共24分)
1.假定一棵普通树的广义表表示为:a(b(e),c(f(h,i,j),g),分别写出先根、后根、按层遍历的结果。
先根: 。
后根: 。 按层: 。
2.己知一个带权图的顶点集V和边集6分别为:
V={0,1,2,3,4,5,6,7};
E={(0,1)8,(0,2)5,(0,3)2,(1,5)6,(2,3)25,(2,4)13,(3,5)9,(3,6)10,(4,6)4,(5,7)20;
则求出该图的最小生成树的权。
最小生成树的权: 。
3.对于线性表(18,25,63,50,42,32,90,66)进行散列存储时,若选用H(K)=K%9作为散列函数,则散列地址为0的元素有 个,散列地址为3的元素有 个,散列地址为5的元素有 个。
4.假定一组记录的排序码力(46,79,56,38,40,80,25,34),在对其进行快速排序的过程中,对应二叉搜索村的深度为 ,分支结点数为
。
四、阅读算法,回答问题(每小题8分,共16分)
1、 void AA(Lnode *&HL)
{
InitList(HL);
InsertRear(HL,30);
InsertRear(HL,50);
int a[5]={15,8,9,26,12};
for}int i=0;i<5;i++) InsertFront(HL,a[ i ]);
}
该核算法被调用执行后,得到的以HL为表头指针的单链表中的数据元素依次为:
。
2、 void AA(Heap&HBT,const Elem type item)
//HBT为一个小根堆
{
HBT.heap[HBT.size]=item;
HBT.size++; eLemType x=item;
int i=HBT.size—1;
while(i!=0){
int j=(i—1)/2;
if(x>=HBT.heap[j])break;
HBT.heap[i]=HBT.heap[j];
i=j;}HBT.heap[i]=x;
}
该算法的功能为:
。
五、算法填空,在画有横线和地方填写合适的内容(10分)
从一维数组A[n]中二分查找关键字为K的元素的递归算法,若查找成功则返回对应元素的下标,否则返回—1。
int Binsch(Elem Type A[],int low,int high,Key Type K)
{
if(low<=high)
{
int mid=(low+high)/2;
if(K= =A[mid].key) ;
else if(K
else
}
else return—1;
}
六、编写算法(10分)
编写在以BST为树根指针的二叉搜索树上进行查找值为item的结点的非递归算法,若查找item带回整个结点的值并返回ture,否则返回false。
bool Find(BtreeNode*BST,ElemType&item)
参考答案
一、单选题(每小题2分,共8分) 评分标准:选对者得2分,否则不得分。
1、A 2、B 3、D 4、C
二、填空题(每空1分,共32分)
评分标准:每空得1分,否则不得分。
1、1:1 1:N M:N (或者1对1 1对N M对N)
2、p—>next a[p]. next
3、引用
4、后进先出 先进先出
5、162
6、31 21
7、6
8、查找成功 左子树 右子树
9、堆尾 堆顶 向下
10、n2
11、n n一1
12、二叉搜索树理想平衡树(次序无先后)
13、500 25
14、9 19
15、交换 二路归并
16、 ()(n) ()(nlog2n) ()(n)
三、运算题(每小题6分,共24分)
1.先根:a,b,e,c,f,h,i,j,g,d;(2分)
后根:e,b,h,I,j,f,g,c,d,a;(2分)
按层:a,b,c,d,e,f,g,h,i,j(2分)
2.最小生成树的权:55
3.3 1 2 每个数据占2分
4.5 6 每个数据占3分
四、阅读算法,回答问题(每小题8分,共16分)
1.(12,26,9,8,15,30,50)
评分标准:有一处错误扣4分,两处及以上错误不得分。 2,向HBT堆中插入一个值为item的元素,使得插入后仍是一个堆。
评分标准:请根据叙述情况酌情给分。
五、算法填空,在画有横线的地方填写合适的内容(10分)。
return mid
return Binsch(A ,1ow,mid一1 ,K)
return Binsch(Atmid十1,high,K)
评分标准:对一空得3分,全对得10分。
六、编写算法(10分)
评分标准:请根据编程情况酌情给分。
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;
}