1、(1)O(log3n)(2)O(n2)(3)O(n2)第2章 线性表1、A 4. D 5. C 7. A 二、填空题1.、线性表2、前驱,后继3、p-next; s-data; t4、q-next5、head-next = NULL6、p-next, s7、p-next != p8、 O(1), O(n)第3章 栈和队列1、C 10. D 1.、n-12、O(n)3、135424、2xy+1x-/*5、36、a2, a4, a1, a2, 27、先进后出,加1, 减18、满,空,n9、线性结构10、4三、判断题1.、错2、错3、对4、错5、对6、错7、错四、解答题4、列车进入一个栈式结构的车站
2、,开出车站有 14 可能的顺序:abcd; abdcadcbacdb, acbdbdca,bcda, bcadbacd, badccdba,cbda, cbad,dcba列车进入一个队列式结构的车站,开出车站有 1 可能的顺序:abcd5、6, 247、staxy8、char9、第一个循环:队列Q中的元素依次出队,出队后即进栈S第二个循环:栈S中的元素依次出栈,出栈后即进入队列Q第4章 串1、A 2、D 3、C 4、C 5、D二、简答题1、含零个字符的串称为空串,用表示,串的长度为0。而空格串是由一个或多个空格组成的串,串的长度为所含空格的个数。由串中任意连续字符组成的子序列称为该串的子串。包
3、含子串的串相应地被称为主串。假如一个串S=“a0a1a2an-1”(n0),其中:S为串名,用双引号括起来的内容为串的值,双引号本身不是串的值。2、当且仅当两个串的长度相等并且各个对应位置上的字符都相同时,两个串才相等。3、19,7,good,e,0,3,”I am a good teacher”,”a goodyestea”4、j123456模式串abcnextj-1三、算法题1、void Assign(string *s, string t) n = ( 676 - 2 - 644 ) / 2 = 15 Loc ( 3, 3 ) = Loc ( 0, 0 ) + 3 * 15 + 3 =
4、644 + 45 + 3 = 692.2、(1) 数组B共有12 + 3 + + n= ( n+1 )*n / 2个元素。 (2) 只存下三角部分时,若i j,则数组元素Aij前面有i-1行(1i-1,第0行第0列不算),第1行有1个元素,第2行有2个元素,第i-1行有i-1个元素。在第i行中,第j号元素排在第j个元素位置,因此,数组元素Aij在数组B中的存放位置为:1 + 2 + + (i-1) + j = ( i-1)*i / 2 + j若i j,数组元素Aij在数组B中没有存放,可以找它的对称元素Aji。在数组B的第 (j-1)*j / 2 + i位置中找到。如果第0行第0列也计入,数组
5、B从0号位置开始存放,则数组元素Aij在数组B中的存放位置可以改为:当i j时,= i*(i+1) / 2 + j当i j时,= j*(j+1) / 2 + i 3、 (1) Head (Tail (Tail (L1) ) ) (2) Head (Head (Tail (L2) ) ) (3) Head (Head (Tail (Tail (Head (L3) ) ) ) ) (4) Head (Head (Tail (Tail (L4) ) ) ) (5) Head (Tail (Head(L5) ) ) (6) Head (Head (Tail (Head (Tail (L6) ) ) )
6、 )4、由于线性表中的每个结点对应稀疏矩阵的一个非零元素,其中包括3个字段,分别为该元素的行下标、列下标和值,结点间的次序按矩阵的行优先顺序排列,这个线性表用顺序的方法存储在连续的存储区,则对应的三元组为其十字链表形式为:5、 6、L=(a,(b,c),(d,(e)四、算法题1、【算法分析】从前向后找零元素Ai,从后向前找非零元素Aj,将Ai与Aj交换。【算法源代码】void move(int A,int n)int i=0,j=n-1;int temp;while(ij) while(Ai!=0) i+; while(Aj=0) j-; if(i=0)&(jBj) Ck=Ai; i-; el
7、se Ck=Bj; j+; k-; while(i=0) Ck=Ai;i-;k-; while(jmu=;nu=;tu=;if(B-tu0) j=1; for(k=1;k=;k+) for(i=1;idataj.row=i.col; B-dataj.col=i.row;dataj.e=i.e;4、【算法分析】在求广义表深度的递归算法中,若结点为原子则深度为0,若是空表深度为1,否则返回头指针与尾指针所指广义表的深度最大值。int Glist_Getdeph(Glist L)int m,n; if(!L-tag) return 0; else if(!L) return 1; m=Glist_G
8、etdeph(L-+1; n=Glist_Getdeph(L-; return mnn:n;第6章 树一选择题1、B 2、A 3、B 4、A 5、C 6、C A 7、B 8、B 9、D 10、B11、B 12、B 13、B 14、A 15、C 16、D 17、A 18、A 19、C 20、D二填空题1 1 前驱 2 一个前驱结点 3 后继 4 后继2. n-1 3. n0=n2 +1 4. 1 2 2 10 3 11 5. 1 A 2 D G F 3 B E 4 A C 5 B 6 A C E 7 右 8 左 9 2 10 46. 2507. 18. 2n0-19. 1 D 2 F10. 1
9、GEACBDF 2 111. 1 InOrderTraverse (T-left) 2 printf(T-data) 3 InOrderTraverse (T-right) 12. 。三判断题 3 4 56 7 8 9 10四操作题1(1) (2) GCABFED(3)(4) (5)(6)23(1)所有结点均没有左孩子的二叉树。 (2)所有结点均没有右孩子的二叉树 (3)只有一个根结点的二叉树4 证明: 当n=1时,前序序列和中序序列均只有一个元素且相同,即为根,由此唯一地确定了这颗二叉树。 假设nm-1时,结论成立,现证明当n=m时也成立。设前序序列为:a1 ,a2 ,am,中序序列为:b1
10、 ,b2 ,bm。因为前序序列由前序遍历得到,则a1为根结点元素;又中序序列由中序遍历得到,则在中序序列中必能找到和a1相同的元素并设为bj(1jm),由此可得 b1 ,bj-1为左子树的中序序列, bj+1 ,bm为右子树的中序序列。(1) 若j=1即b1为根,此时二叉树的左子树为空, a2 ,am即为右子树的前序序列, b2 ,bm即为右子树的中序序列,右子树的结点数为m-1,由此,这两个序列唯一确定了右子树,也唯一确定了二叉树。(2) 若j=m即bm为根,此时二叉树的右子树为空, a2 ,am即为左子树的前序序列, b2 ,bm即为左子树的中序序列,同(1),这两个序列唯一确定了左子树,也唯一确定了二叉树。(3) 2jm-1,则子序列 a2 ,aj和 b1 ,bj-1分别为左子树的前序序列和中序序列,这两个序列唯一确定了左子树;子序列 aj+1 ,am和 bj+1 ,bm分别为右子树的前序序列和中序序列,这两个序列唯一确定了右子树;由此,证明了知道一棵二叉树的前序序列和中序序列,就能唯一地确定一棵二叉树。5678五算法设计题=p; p=p
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1