数据结构试卷(一)
、单选题(每题 2分,共20分)
1.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素
B.都是先进后岀
C.都是先进先岀
D.没有共同点
2.用链接方式存储的队列,在进行插入运算时 ().
A. 仅修改头指针 B. 头、尾指针都要修改
C. 仅修改尾指针 D. 头、尾指针可能都要修改
3.以下数据结构中哪一个是非线性结构? ()
A.队列 B.栈 C.线性表 D.二叉树
4.设有一个二维数组 A[m][n],假设A[0][0]存放位置在644(io), A[2][2]存放位置在676(10),每个元素
占一个空间,问A[3][3](io)存放在什么位置?脚注(io)表示用10进制表示。
7.若有18个元素的有序表存放在一维数组 A : 3 ]的比较序列的下标依次为(
A.1,2,3 B. 9,5,2,3
C. 9,5,3 D. 9,4,2,3
8.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为
A. O (1) B. O (n) C. O (1og2n) D. O (n2)
9.对于线性表(7,34, 55, 25, 64, 46,20,10)进行散列存储时,若选用 H (K) =K %9作为散列
函数,则散列地址为1的元素有( )个,
A . 1 B . 2 C . 3 D . 4
10.设有6个结点的无向图,该图至少应有 ( )条边才能确保是一个连通图。
A.5 B.6 C.7 D.8
二、填空题(每空1分,共26分)
1.通常从四个方面评价算法的质量: 、 、 和 。
2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为 。
3.假定一棵树的广义表表示为 A ( C, D (E, F, G), H (I, J)),则树中所含的结点数为
个,树的深度为 ,树的度为 。
4.后缀算式 9 2 3 +- 10 2 / -的值为 。中缀算式(3+4X ) -2Y/3对应的后缀算式为
5.若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指针。在这种存
储结构中,n个结点的二叉树共有 个指针域,其中有 个指针域是存放了地址,有
个指针是空指针。
6.对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点分别有
个和 个。
7.AOV网是一种 的图。
8.在一个具有n个顶点的无向完全图中,包含有 条边,在一个具有n个顶点的有向完全图中,
包含有 条边。
9.假定一个线性表为(12,23,74,55,63,40),若按Key % 4条件进行划分,使得同一余数的元素成为一个子
表,则得到的四个子表分别为 、 、
和 。
10.向一棵B_树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度 。
11.在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为 ,整个堆排序过程的时间复
杂度为 。
12.在快速排序、堆排序、归并排序中, 排序是稳定的。
三、计算题(每题 6分,共24分)
2.请画岀下图的邻接矩阵和邻接表
3.已知一个图的顶点集 V和边集E分别为:V={1,2,3,4,5,6,7};
E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15, (3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25};
用克鲁斯卡尔算法得到最小生成树,试写岀在最小生成树中依次得到的各条边。
4.画出向小根堆中加入数据 4, 2, 5, 8, 3时,每加入一个数据后堆的变化。
四、 阅读算法(每题 7分,共14分)
1.LinkList mynote(LinkList L)
{//L是不带头结点的单链表的头指针
if(L&&L->next){
q=L ; L=L — >next; p=L ;
S1: while(p — >next) p=p — >next ;
S2: p— >next=q ; q — >next=NULL ;
}
return L ;
}
请回答下列问题:
(1 )说明语句S1的功能;
(2)说明语句组S2的功能;
(3) 设链表表示的线性表为(a1,a2,…,an),写岀算法执行后的返回值所表示的线性表。
2.void ABC(BTNode * BT)
{
if BT {
ABC (BT->left);
ABC (BT->right);
coutv<BT->datavv'';
}
}
该算法的功能是:
五、 算法填空(共8分
二叉搜索树的查一魁归算法:
bool Find(BTreeNode* BST,ElemType& item)
{
if (BST==NULL)
return false; // 查失败
else {
if (item==BST->data){
item=BST->data;〃 查成功
return ;}
else if(item<BST->data)
return Find( ,item);
else return Find( ,item);
}//if
}
六、 编写算法(共8分
统计岀单链表HL中结点的值等于给定值 X的结点数。
int CountX(LNode* HL,ElemType x)
数据结构试卷(二)
一、选择题 (24 分) 1.下面关于线性表的叙述错误的是( )。
(A)线性表采用顺序存储必须占用一片连续的存储空间
(B)线性表采用链式存储不必占用一片连续的存储空间
(C)线性表采用链式存储便于插入和删除操作的实现
(D)线性表采用顺序存储便于插入和删除操作的实现
2 •设哈夫曼树中的叶子结点总数为 m若用二叉链表作为存储结构,则该哈夫曼树中总共有( )个空指
针域。
(A) 2m-1 (B) 2m (C) 2m+1 (D) 4m
3•设顺序循环队列 Q[0: M-1]的头指针和尾指针分别为 F和R,头指针F总是指向队头元素的前一位置, 尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为( )。
(A) R-F (B) F-R (C) (R-F+M) %M (D) (F-R+M) %M
4.设某棵二叉树的中序遍历序列为 ABCD,前序遍历序列为 CABD,则后序遍历该二叉树得到序列为 ()<
数据结构与算法题库
(A) BADC | (B) BCDA | (C) CDAB | (D) CBDA | ||
5. | 设某完全无向图中有 | n 个顶点,则该完全无向图中有( ) | 条边。 | ||
(A) n(n-1)/2 | (B) n(n-1) | 2 (C) n 2 | (D) n 2-1 | ||
6. | 设某棵二叉树中有 | 2000 个结点, | 则该二叉树的最小高度为( | )。 | |
(A) 9 | (B) 10 | (C) 11 | (D) 12 | ||
7. | 设某有向图中有 n | 个顶点,则该有向图对应的邻接表中有( | )个表头结点。 | ||
(A) n-1 | (B) n | (C) n+1 | (D) 2n-1 | ||
8 •设一组初始记录关键字序列 (5,2, 6,3,8),以第一个记录关键字 5为基准进行一趟快速排序的结果
为( )。
(A) 2 , 3, 5, 8, 6 (B) 3 , 2, 5, 8, 6
(C) 3 , 2, 5, 6, 8 (D) 2 , 3, 6, 5, 8
二、填空题 (24 分)
1.为了能有效地应用HASH查技术,必须解决的两个问题是 和
2.下面程序段的功能实现数据 x 进栈,要求在下划线处填上正确的语句。
typedef struct {int s[100]; int top;} sqstack;
void push(sqstack &stack,int x)
{
if (p==m- 1) printf( “overflow ”);
else { ; ;}
}
3.中序遍历二叉排序树所得到的序列是 序列(填有序或无序) 。
4.快速排序的最坏时间复杂度为 ,平均时间复杂度为 。
5.设某棵二叉树中度数为 0的结点数为N0,度数为1的结点数为M,则该二叉树中度数为2的结点数为
;若采用二叉链表作为该二叉树的存储结构,则该二叉树中共有 个空指针域。
6.设某无向图中顶点数和边数分别为 n和e,所有顶点的度数之和为 d,则e= 。
7.设一组初始记录关键字序列为 (55, 63, 44, 38, 75, 80, 31, 56),则利用筛选法建立的初始堆为
, BFS遍历的输岀序列是
團的邻撞轰存储结枸
三、应用题(36分)
1.设一组初始记录关键字序列为 (45 , 80, 48, 40, 22, 78),则分别给出第4趟简单选择排序和第 4趟 直接插入排序后的结果。
2 .设指针变量p指向双向链表中结点 A,指针变量q指向被插入结点B,要求给岀在结点 A的后面插入结 点B的操作序列(设双向链表中结点的两个指针域分别为 llink 和rlink )。
3. 设一组有序的记录关键字序列为 (13 , 18, 24 , 35, 47, 50, 62, 83, 90),查方法用二分查,要 求计算岀查关键字 62时的比较次数并计算岀查成功时的平均查长度。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论