1、( ) A. 在队列第i个元素之后插入一个元素 B. 从队头删除一个元素 C. 判断一个队列是否为空 D.读取队头元素的值4. 字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成( )个不同的字符串? A.14 B.5 C.6 D.85. 由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为( )。EAGCBDF图1A 11 B.35 C. 19 D. 53以下6-8题基于图1。6. 该二叉树结点的前序遍历的序列为( )。A. E、G、F、A、C、D、B B. E、A、G、C、F、B、DC. E、A、C、B、D、G、F D. E、G、A、C、D、F、B
2、7. 该二叉树结点的中序遍历的序列为( )。A. A、B、C、D、E、G、FB. E、A、G、C、F、B、D C. E、A、C、B、D、G、F E.B、D、C、A、F、G、E 8. 该二叉树的按层遍历的序列为( )。 AE、G、F、A、C、D、B B. E、A、C、B、D、G、F C. E、A、G、C、F、B、D D. E、G、A、C、D、F、B9. 下面关于图的存储的叙述中正确的是( )。 A用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关 B用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关 C. 用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数
3、都有关 D用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关10. 设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建堆的结果? A. a,g,h,m,n,p,q,x,z B. a,g,m,h,q,n,p,x,z C. g,m,q,a,n,p,x,h,z D. h,g,m,p,a,n,q,x,z二、 填空题(每空1分,共26分) 数据的物理结构被分为_顺序_、_链表_、_索引_和_散列_四种。 对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为_ O(n)_,在表尾插入元素的时间复杂度为_ O(1)_。 向一个由HS指向的
4、链栈中插入一个结点时p时,需要执行的操作是_ p-next=HS _;删除一个结点时,需要执行的操作是_HS=p HS=HS-next_(假设栈不空而且无需回收被删除结点)。 对于一棵具有n个结点的二叉树,一个结点的编号为i(1in),若它有左孩子则左孩子结点的编号为_2i_,若它有右孩子,则右孩子结点的编号为_2i+1_,若它有双亲,则双亲结点的编号为_i/2_。 当向一个大根堆插入一个具有最大值的元素时,需要逐层_向上_调整,直到被调整到_根_位置为止。 以二分查找方法从长度为10的有序表中查找一个元素时,平均查找长度为_2.9_。 表示图的三种常用的存储结构为_邻接矩阵_、_邻接表 _和
5、_边集数组_。 对于线性表(70,34,55,23,65,41,20)进行散列存储时,若选用H(K)=K %7作为散列函数,则散列地址为0的元素有_1_个,散列地址为6的有_4_个。 在归并排序中,进行每趟归并的时间复杂度为_O(n)_,整个排序过程的时间复杂度为_O(nlog2n)_,空间复杂度为_O(n)_。 在一棵m阶B_树上,每个非树根结点的关键字数目最少为_m/2-1_个,最多为_m-1_个,其子树数目最少为_m/2_,最多为_m_。三、 运算题(每题 6 分,共24分) 图2写出下列中缀表达式的后缀形式:(1) 3X/(Y-2)+1 3 x * Y 2 - / 1 +(2) 2+X
6、*(Y+3) 2 X Y 3 + * + 试对图2中的二叉树画出其: 顺序存储表示的示意图; 二叉链表存储表示的示意图。 已知一个图的顶点集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; 按照普里姆算法从顶点1出发得到最小生成树,试写出在最小生成树中依次得到的各条边。(1,2)3, (1,3)5, (1,4)8, (4,6)4, (2,5)10, (4,7)20四、 阅读算法(每题7分,共14分) vo
7、id AE(Stack& S) InitStack(S); Push(S,3); Push(S,4); int x=Pop(S)+2*Pop(S); Push(S,x); int i,a5=1,5,8,12,15; for(i=0;i5;i+) Push(S,2*ai); while(!StackEmpty(S) coutPop(S)left,c1,c2); c1+; if (BT-left=NULL&BT-right=NULL) c2+;right,c1,c2); /if 该函数执行的功能是什么?统计出BT所指向的二叉树的结点总数和叶子总数五、 算法填空(共8分)向单链表的末尾添加一个元素的
8、算法。Void InsertRear(LNode*& HL,const ElemType& item)LNode* newptr;newptr=new LNode;If (_newptr=NULL_)cerr=data _=item;newptr-next=NULL;if (HL=NULL) HL=_ newptr_;elseLNode* P=HL;While (P-next!=NULL) _p=p-next_;p-next=newptr; 六、 编写算法(共8分)编写从类型为List的线性表L中将第i个元素删除的算法,(假定不需要对i的值进行有效性检查,也不用判别L是否为空表。)void Delete(List& L, int i) for(int j=i-1;jnext 2i 2i+1 i/2(或i/2) 图3向上 根 2.9 邻接矩阵 邻接表 边集数组 1 4 O(n) O(nlog2n) O(n) m/2-1 m-1 m 运算题(每题6分,共24分) (1) 3 X * Y 2 - / 1 + 2 X Y 3 + * + (1)12345678910111213141516 (2)见图3所示: (1)不是小根堆。调整为:12,65,33,70,24,56,48,92,86,33 (2)是小根堆。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1