“数据结构”期末考试试题
一、 单选题(每小题2分,共12分) 1 ?在一个单链表HL中,若要向表头插入一个由指针 A ? HL = ps p 一>next = HL B ? p 一>next = HL; HL= p3 C ? p 一>next = Hl ; p = HL;
D ? p 一>next = HL 一 >next;HL 一>next = p; 2 ? n个顶点的强连通图中至少含有 ()。 A.n —I条有向边 B.n 条有向边 C.n(n — 1) /2条有向边 D.n(n — 1)条有向边
p指向的结点,则执行()。
3. 从一棵二叉搜索树中查找一个元素时,其时间复杂度大致为 ()。 A.0(1) B.O(n)
C.O(1Ogzn) D.O(n2)
4. 由权值分别为3,8,6,2, 5的叶子结点生成一棵哈夫曼树,它的带权路径长度为 ()。 A ? 24 B ? 48
C. 72 D ? 53
5 ?当一个作为实际传递的对象占用的存储空间较大并可能需要修改时,应最好把它说明为 ()参数,以节省参数值的传
输时间和存储参数的空间。 A.整形 B.引用型
C.指针型 D.常值引用型?
6 ?向一个长度为n的顺序表中插人一个新元素的平均时间复杂度为 ()。 A ? O(n) B ? 0(1)
C ? O(n2) D ? O(10g2n)
二、 填空题(每空1分,共28分)
1 ?数据的存储结构被分为 、 、 和 四种。 2 ?在广义表的存储结构中,单元素结点与表元素结点有一个域对应不同,各自分别为一一域和一一域。
3 ? 中缀表达式 3十x*(2.4 / 5—6)所对应的后缀表达式为 。 4 ?在一棵高度为h的3叉树中,最多含有一一结点。
5 ?假定一棵二叉树的结点数为 18,则它的最小深度为一一,最大深度为—— 6 ?在一棵二叉搜索树中,每个分支结点的左子树上所有结点的值一定一一该结点的值, 右子树上所有结点的值一定一一该结 点的值。 7 ?当向一个小根堆插入一个具有最小值的元素时,该元素需要逐层 -- 调整,直到被调整到 --- 位置为止。
8 ?表示图的三种存储结构为 、 和 。 9 ?对用邻接矩阵表示的具有 n个顶点和e条边的图进行任一种遍历时,其时间复杂度为一一,对用邻接表表示的图进行任一 种遍历时,其时间复杂度为 。
10 ?从有序表(12,18,30, 43, 56,78,82,95)中依次二分查找 43和56元素时,其查找长度分别为一一和 ------------- ?假定对长度n= 144的线性表进行索引顺序查找,并假定每个子表的长度均为 ,则进行索引顺序查找的平均查找长 度为一一,时间复杂度为——
12 ? 一棵B—树中的所有叶子结点均处在一一上。
13 ?每次从无序表中顺序取岀一个元素,把这插入到有序表中的适当位置,此种排序方法叫做——排序;每次从无序表中挑
选岀一个最小或最大元素,把它交换到有序表的一端,此种排序方法叫做一一排序。
14 ?快速排序在乎均情况下的时间复杂度为一一,最坏情况下的时间复杂度为一一。 三、运算题(每小题6分,共24分) 1 ?假定一棵二叉树广义表表示为 a(b(c,d),c(((,8))),分别写出对它进行先序、中序、后序和后序遍历的结果。 先序:
中序; 后序: 2 ?已知一个带权图的顶点集 V和边集G分别为: V = {0,1,2, 3,4, 5};
E={(0 , 1)8 , (0 , 2)5 , (0 , 3)2 , (1 , 5)6 , (2 , 3)25 , (2 , 4)13 , (3 , 5)9 , (4 , 5)10}, 则求岀该图的最小生成树的权。 最小生成树的权;
11 3
?假定一组记录的排序码为(46 , 79, 56, 38, 40, 84, 50, 42),则利用堆排序方法建立的初始堆为一一。
4 ?有7个带权结点,其权值分别为 3, 7, 8, 2, 6, 10, 14,试以它们为叶子结点生成一棵哈夫曼树,求出该树的带权路径 长度、高度、双
分支结点数。
带权路径长度:一一 高度:一一 双分支结点数:一一。 四、阅读算法,回答问题(每小题8分,共16分) 1 ? VOIdAC(List&L)
{
InitList(L) ;
InsertRear(L;25) ;
lnsertFront(L , 50)
lntaL4] = {5 , 8, 12, 15, 36}; for(inti = 0; i<5; i++)
%2== 0)InsertFront(L , a[i]);
elselnsertRear(L , a[i]);
if (a[i] }
该算法被调用执行后,得到的线性表
2 {
InitQueue(Q) ;
inta[5] = {6 , 12, 5,15, 8}; for(int i QInsert(Q QInsert(Q QInsert(Q
L为:
. void AG(Queue&Q)
= 0;i<5; i++)QInsert(Q , a[i]); , QDelete(Q)); , 20);
, QDelete(Q)十 16);