1、 ji;Aij=0;9. 分析下面算法(程序段),给出最大语句频度 ,该算法的时间复杂度是_ _。s=0;j+) for (k=0;kk+) s=s+Bijk;sum=s;10. 分析下面算法(程序段)给出最大语句频度 ,该算法的时间复杂度是_ _。i=s=0;while (sn) i+; s+=i; /s=s+i 11. 分析下面算法(程序段)给出最大语句频度 ,该算法的时间复杂度是_ _。i=1;while (inext= =NULLC. head-next= =head D. head!=NULL8. 带头结点的单链表head为空的判定条件是_。9. 非空的循环单链表head的尾结点(由
2、p所指向)满足_。A. p-next= =NULL B. p= =NULLC. p-next= =head D. p= =head 10. 在双向循环链表的p所指结点之后插入s所指结点的操作是_。right=s; s-left=p; p-right-left=s;right=p-right;B. p-C. s-D. s- 11. 在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行_。A. s-next=p-next;next=s; B. p-next=s-next=p;B. q- C. p-next=q;12. 在一个单链表中,若p所指结点不是最后结点,在p
3、之后插入s所指结点,则执行_。 B. s- p=s;13. 在一个单链表中,若删除p所指结点的后续结点,则执行_。next= p-next-next; B. p= p- D. p= p-14. 从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较_个结点。A. n B. n/2 C. (n-1)/2 D. (n+1)/2 15. 在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是_ _。A. O(1) B. O(n) C. O (n2) D. O (nlog2n) 16. 给定有n个元素的向量,建立一个有序单链表的时间复杂度是_ _。A. O(1
4、) B. O(n) C. O (n2) D. O (n*log2n)2.2 填空题(将正确的答案填在相应的空中)1. 单链表可以做_ _的链接存储表示。2. 在双链表中,每个结点有两个指针域,一个指向_ _,另一个指向_ _。3. 在一个单链表中p所指结点之前插入一个s (值为e)所指结点时,可执行如下操作:q=head;while (q-next!=p) q=q-s= new Node;data=e;q-next= ; /填空s-4. 在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q= p-p-next= _ _;delete ;5. 在一个单链表中p所指结点之后插入一个s所指结
5、点时,应执行s-next=_ _和p-next=_的操作。 6. 对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是_ _;在给定值为x的结点后插入一个新结点的时间复杂度是_ _。2.3 算法设计题:1.设顺序表va中的数据元数递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。Status Insert_SqList(SqList &va,int x) if(va.length+1maxsize) return ERROR;va.length+;for(i=va.length-1;va.elemix&i=0;i-) va.elemi+1=va.e
6、lemi;va.elemi+1=x;return OK;2.试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1, a2,. an)逆置为(an, an-1,., a1)。void reverse(int a, int size) int i,j,tmp; for(i=0, j=size-1; iwhile(q!=L & q-datab)r=q;free(r);if(p!=q)4. 试写一算法,实现单链表的就地逆置(要求在原链表上进行)。void converse(NODEPTR L) NODEPTR p,q; p=L- q=p- L-next=NULL; while(p) /
7、* 对于当前结点p,用头插法将结点p插入到头结点之后 */next=L- p=q; q=q- 2.1 1. B 2. A, C 3. B 4. D 5. C 6. A 7. A 8. B 9. C 10. D 11.B 12.B 13.A 14.D 15.B 16.C 2.2 1. 线性结表 2. 前驱结点、后继结点 3. s, p 4. q-next, q 5. p-next, s 6. O (1) , O (n)习题3 栈和队列3.1 单项选择题1. 一个栈的入栈序列a,b,c,d,e,则栈的不可能的输出序列是_。 A. edcba B. decba C. dceab D. abcde 2
8、. 若已知一个栈的入栈序列是1,2,3,n,其输出序列为p1,p2,p3,pn,若p1=n,则pi为_。 A. i B. n=i C. n-i+1 D. 不确定3. 栈结构通常采用的两种存储结构是_。A. 顺序存储结构和链式存储结构B. 散列方式和索引方式C. 链表存储结构和数组D. 线性存储结构和非线性存储结构4. 判定一个顺序栈ST(最多元素为m0)为空的条件是_。A. top !=0 B. top= =0 C. top !=m0 D. top= =m0-15. 判定一个顺序栈ST(最多元素为m0)为栈满的条件是_。A. top!=0 B. top= =0 C. top!6. 栈的特点是_
9、,队列的特点是_。 A. 先进先出 B. 先进后出7. 向一个栈顶指针为HS的链栈中插入一个s所指结点时,则执行_ _。(不带空的头结点)A. HSnext=s;B. snext= HSnext; HSnext=s;C. snext= HS; HS=s;D. snext= HS; HS= HSnext;8. 从一个栈顶指针为HS的链栈中删除一个结点时,用x保存被删结点的值,则执行_ _。(不带空的头结点) A. x=HS; B. x=HSdata;C. HS= HSnext; x=HSdata; D. x=HSdata;9. 一个队列的数据入列序列是1,2,3,4,则队列的出队时输出序列是_
10、。 A. 4,3,2,1 B. 1,2,3,4 C. 1,4,3,2 D. 3,2,4,110. 判定一个循环队列QU(最多元素为m0)为空的条件是_。A. rear - front= =m0 B. rear-front-1= =m0C. front= = rear D. front= = rear+111. 判定一个循环队列QU(最多元素为m0, m0= =Maxsize-1)为满队列的条件是_。A. (rear- front)+ Maxsize)% Maxsize = =m0B. rear-front-1= =m0 C. front= =rear D. front= = rear+112.
11、 循环队列用数组A0,m-1存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是_。A. (rear-front+m)%m B. rear-front+1C.rear-front-1 D. rear-front13. 栈和队列的共同点是_。A. 都是先进后出 B. 都是先进先出C. 只允许在端点处插入和删除元素 D. 没有共同点3.2 填空题(将正确的答案填在相应的空中)1. 向量、栈和队列都是_结构,可以在向量的_位置插入和删除元素;对于栈只能在_插入和删除元素;对于队列只能在_插入元素和_删除元素。2. 向一个长度为n的向量的第i个元素(1in+1)之前插入一个
12、元素时,需向后移动_个元素。3. 向一个长度为n的向量中删除第i个元素(1in)时,需向前移动_个元素。4. 在具有n个单元的循环队列中,队满时共有_个元素。3.1 1. C 2. C 3. A 4. B 5.D 6. BA 7.C 8. B 9. C 10. C 11. A 12. A 13.C 3.2 1. 线性、任何、栈顶、队尾、队首 2. n-i+1 3. n-i 4. n-1 习题6 树和二叉树6.1 单项选择题1. 由于二叉树中每个结点的度最大为2,所以二叉树是一种特殊的树,这种说法_。A. 正确 B. 错误2. 假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子
13、结点数为 个。 A15 B16 C17 D473. 按照二叉树的定义,具有3个结点的不同形状的二叉树有_种。A. 3 B. 4 C. 5 D. 64. 按照二叉树的定义,具有3个不同数据结点的不同的二叉树有_种。A. 5 B. 6 C. 30 D. 325. 深度为5的二叉树至多有_个结点。A. 16 B. 32 C. 31 D. 106. 设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为_ _。A. 2h B. 2h-1 C. 2h+1 D. h+17. 对一个满二叉树,m个树叶,n个结点,深度为h,则_ 。A. n=h+m B. h+m=2n C. m=h-
14、1 D. n=2 h-18. 任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序_。A.不发生改变 B.发生改变 C.不能确定 D.以上都不对9. 如果某二叉树的前根次序遍历结果为stuwv,中序遍历为uwtvs,那么该二叉树的后序为_。 A. uwvts B. vwuts C. wuvts D. wutsv10. 二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法_。 A. 正确 B. 错误11. 某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是_。A. bdgcefha B. gdbecfh
15、a C. bdgaechf D. gdbehfca12. 在一非空二叉树的中序遍历序列中,根结点的右边_。A. 只有右子树上的所有结点 B. 只有右子树上的部分结点C. 只有左子树上的部分结点 D. 只有左子树上的所有结点13. 如图6.1所示二叉树的中序遍历序列是_。A. abcdgef B. dfebagc C. dbaefcg D. defbagc 图6.1 14. 一棵二叉树如图6.2所示,其中序遍历的序列为_ _。A. abdgcefh B. dgbaechf C. gdbehfca D. abcdefgh15设a,b为一棵二叉树上的两个结点,在中序遍历时,a在b前的条件是 。Aa在
16、b的右方 Ba在b的左方Ca是b的祖先 Da是b的子孙16. 已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是_。 A. acbed B. decab C. deabc D. cedba17. 实现任意二叉树的后序遍历的非递归算法而不使用栈结构,最佳方案是二叉树采用_存储结构。A. 二叉链表 B. 广义表存储结构 C. 三叉链表 D. 顺序存储结构18. 如图6.3所示的4棵二叉树,_不是完全二叉树。20. 在线索化二叉树中,t所指结点没有左子树的充要条件是_。A. tleft=NULL B. tltag=1C. tltag=1且tleft=NULL D.
17、以上都不对21. 二叉树按某种顺序线索化后,任一结点均有指向其前驱和后续的线索,这种说法_。22. 二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。这种说法_。23. 具有五层结点的二叉平衡树至少有_个结点。A. 10 B. 12 C. 15 D. 1724. 树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历。这里,我们把由树转化得到的二叉树叫做这棵数对应的二叉树。结论_是正确的。A.树的先根遍历序列与其对应的二叉树的先序遍历序列相同B.树的后根遍历序列与其对应的二叉树的后序遍历序列相同C.树的先根遍历序列与
18、其对应的二叉树的中序遍历序列相同D.以上都不对25. 树最适合用来表示_。A. 有序数据元素 B. 无序数据元素 C. 元素之间具有分支层次关系的数据 D. 元素之间无联系的数据6.2 填空题(将正确的答案填在相应的空中)1. 有一棵树如图6.5所示,回答下面的问题: 这棵树的根结点是_; 这棵树的叶子结点是_; 结点k3的度是_; 这棵树的度是_; 这棵树的深度是_; 结点k3的子女是_; 结点k3的父结点是_2. 指出树和二叉树的三个主要差别_、_、_。_;3. 从概念上讲,树与二叉树是两种不同的数据结构,将树转化为二叉树的基本目的是_ _。4. 一棵二叉树的结点数据采用顺序存储结构,存储
19、于数组t中,如图6.6所示,则该二叉树的链接表示形式为_ _。5. 深度为k的完全二叉树至少有_个结点。至多有_个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是_。6. 在一棵二叉树中,度为零的结点的个数为n 0,度为2的结点的个数为 n 2,则有n0=_。7. 一棵二叉树的第i(i1)层最多有_个结点;一棵有n(n0)个结点的满二叉树共有_个叶子和_个非终端结点。8. 结点最少的树为_,结点最少的二叉树为_。9. 现有按中序遍历二叉树的结果为abc,问有_种不同形态的二叉树可以得到这一遍历结果,这些二叉树分别是_。10. 由如图6.7所示的二叉树,回答以下问题: 其中序遍历序列为_; 其前序遍历序列为_; 其后序遍历序列为_;6.3 简答题1. 根据二叉树的定义,具有三个结点的二叉树有5种不同的形态,请将它们分别画出。2. 假设一棵 二叉树的先序序列为EBADCFHGIKJ和中序序列为ABCDEFGHIJK。请画出该树。3. 由如图6.7所示的二叉树,回答以下问题:(1)画出该二叉树的中序线索二叉树;(2)画出该二叉树的后序线索二叉树;(3)画出该二叉树对应的森林。4. 已知一棵树如图6.8所示,转化为一棵二叉树,表示为_。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1