应用题1. 已知线性表的存储结构为顺序表,阅读下列算法,并回答问题:(1) 设线性表 L= (51, -9, -6, 39, 0, -11, 34, 70, -16),写出执行算法 f11(&L)后的 L状态; ( 2)简述算法 f11 的功能void f11 (SeqList *L) {int i,j;for (i=j=0;ilen; i++) if(L->elem[i]>=0){if(i!=j)L->elem[j]=L->elem[i];j++;}L->len=j;}【答案】(1) L=(51,39,0,34,70)(2) 删除顺序表中小于 0的数2. 假设以带头结点的单链表表示线性表 ,阅读下列算法 f 22,并回答问题 :(1) 设线性表为(a1, a2, a3, a4, a5, a6, a7 ),写出执行算法f22后的线性表;(2) 简述算法f22的功能void fun(LNode *L){//L为带头结点单链表的头指针P =L;while (p &&p - >next){q = p- >next;p- >next =q- >next;p =q - >next;free(q);}}【答案】( 1 ) (a 2,a 4,a 6)(2) 删除单链表中数据结点序号为奇数的那些结点。
3•假设以数组seqn[ m]存放循环队列的元素,设变量 rear和quelen分别指示循环队列中队尾元素的位置和元素的个数1) 写出队满的条件表达式;(2) 写出队空的条件表达式;⑶设m=50,rear=19,quelen=25,求队头元素的位置;(4)写出一般情况下队头元素位置的表达式答案】(1)quele n==m⑵ quele n==0⑶45(4)fro nt=(rear-quele n+1+m)%m4. 假设以数组seqn : m ]存放循环队列的元素,设变量 front和rear分别指示循环队列中队头元素的位置和队尾元素的位置1) 写出队满的条件表达式;(2) 写出队空的条件表达式;⑶设m=40,rear=13,front=19,求队列的元素的个数 quelen ;(4)写出一般情况下元素的个数的表达式答案】(1) (rear+1)%m==fro nt(2) rear==fro nt(3) 34(4) quele n=(rear-fro ntm)%m5. 假设有一个如下图的8X 8矩阵,矩阵元素都是整型量 (次对角线以上的元素都是 0)若将上述矩阵中次对角线及其以下的元素按行优先压缩存储在一维数组 B中,请回答下列问题:(1) B数组的体积至少是多少 ?(2) 若a18存储在B[0]中,a56存储在B[k]中,则k值为多少?(1)(2)U a28【答案】(1) 36 (2) 136•阅读下列算法,并回答问题:f33(1) Q、Q1和Q2都是队列结构,设队列 Q= (1 , 0, -5, 2, -4, -6, 9),其中1为队头元素,写出执行(&Q,&Q1,&Q2)之后队列Q、Q1和Q2的状态;(2) 简述算法f33的功能。
注:lnitQueue、EnQueue、DeQueue和QueueEmpty分别是队列初始化、入列、出队和判队空的操作)void f31 (Queue*Q, Queue*Q1, Queue*Q2) {int e;Ini tQueue (Q1);Ini tQueue (Q2);while (!QueueEmpty (Q)) {e=DeQueue (Q);if (e>=0) En Queue (Q1,e);else En Queue (Q2,e)}}【答案】(1) Q=() Q1=(1,0,2,9) q2=(-5,-4,-6)(2) 将C队列中的数据全部出队;不小于 0的进Q1,否则进Q27. 已知二叉树如右图所示1) 画出该二叉树的二叉链表;(2) 分别写出该二叉树的先根、中根和后根遍历序列答案】(1) 二叉链表:(2 )先根遍历序列: ABDCEGF 中根遍历序列:DBAEGCF 后根遍历序列:DBGEFCA8、假设一棵二叉树的先根遍历序列为 ABCDEFQH中根遍历序列为 CDBEGFHA (1)画出该二叉树;【答案】(1)二叉树(2)写出后根遍历序列2)后根遍历序列:DCGHFEBA9、假设一棵二叉树的中根遍历序列为 DGBEACHFI后根遍历序列为 GDEBHIFCA(1)画出该二叉树;(2)写出先根遍历序列。
答案】(1)二叉树:(2)先根遍历序列: ABDGECFHI{A , D, G, H , M S, T},每个字符的使用频率分别为 {3 , 7, 18 , 2 , 6 ,(按照每个结点的左子树根结点的权小于等于右子树根结点的权的次序构10. 假设一棵二叉树的层次遍历序列为 ABCDEFGHI中根遍历序列为 DHBEAFCIG(1)画出该二叉树;(2)写出先根和后根遍历序列答案】(1 )二叉树:(2 )先根遍历序列: ABDHECFGI 后根遍历序列:HDEBFIGCA11•设某通讯系统仅用七个英文字符10, 14}请画出对应的哈夫曼编码树 造),并求出每个字符的哈夫曼编码答案】哈夫曼编码ADGHMST00011001100000011010112. 假设通信电文使用的字符集为 { S , T, B, F, C},字符的哈夫曼编码依次为: 011, 10 , 00, 010和111)请根据哈夫曼编码画出此哈夫曼树,并在叶子结点中标注相应字符;⑵若这些字符在电文中出现的频度分别为: 4, 7, 5, 2和9,求出电文的总长度答案】(1)编码哈夫曼树电文的总长度=4*3+7*2+5*2+2*3+9*2=6013、已知一个有向图如右图所示。
1) 试画出它的邻接表表结点按顶点编号递减排列)(2) 分别求出从V1出发按深度优先搜索和广度优先搜索算法遍历得到的顶点序列 【答案】(1)⑵深度优先搜索序列:v1 , v 4, v 3 , v 5, v 2广度优先搜索序列:v1, v 4 , v 3, v 2 , v 514、已知一个AO\网如右图所示1)试画出它的邻接链表表结点按顶点编号递减排列)⑵试写出按照拓扌卜排序算法得到的拓扑序列答案】(1)(2 ) v2,v 5,v 1 ,v 3,v 6,v 415、请用普里姆算法(从顶点V3开始)和克鲁斯卡尔算法构造下图所示网络的最小生成树,按照并入最小生成树 中边的次序填写下表,并画出最小生成树始点终占八、、权值次序 1 2 3 4 5【答案】(1 )普里姆算法构造过程:最小生成树:始点V3V1V3V2V2终占—二 八、、V1V4V2V5V6权值121416810次序 1 2 3 4 5(2)克鲁斯卡尔算法构造过程:始点V2V2V3V1V3终占—二 八、、V5V6V1V4V2权值810121416次序 1 2 3 4 5最小生成树:16、设关键字序列(17,8,13,25,24,16,3,19,1),写出用下列方法排序时,第一趟结束时关键字的排列状态。
1)冒泡排序 (2)希尔排序(d1=4) ( 3 )快速排序【答案】(1) 冒泡排序 (8,13,17,24,16,3,19,1,25)(2) 希尔排序(d1=4) ( 1, 8,3,19,17,16,13,25,24)(3) 快速排序(1,8,13,3,16)17(24,19,25)17、对有序表{12,24,30,46,52,61,70,79,83} 进行折半查找方法查找,(1 )求出查找24和83时所需比较的次数;(2)画出判定树; (3)求ASL和MSL答案】(1)24比较2次;83比较4次⑵判定树:(3)ASL=(1+4+12+8)/9=25/9=2.78MSL=418.已知一组数据元素为(68, 21 , 95, 71, 14, 57, 28, 33, 80),要求:(1) 试从空树开始画出按元素排列顺序输入而生成的一棵二叉排序树;(2) 画出删除结点68后的二叉排序树答案】(1)二叉排序树:68后的二叉排序树:或:19.选取哈希函数为H(K)=K % 7用线性探测的开放地址法处理冲突试在0〜8的散列地址空间中对关键字(1)哈希表:01234567850722519483268比较次数:1111 14 4序列{25,72,48,19,32,50,68}构造哈希表,并求出等概率下查找成功的平均查找长度。
答案】(2) AS—d竺720. 下列是一棵五阶B-树,依次执行以下两步操作,画出每一步执行后所得到的 B-树形1)插入n;(2)删除e2 )删除结点【答案】(1)插入n:⑵删除e:21. 已知关键字序列为: (70,31,52,41, 88,12,27,66 )哈希表长为 9,哈希函数为:H (k) = k %9,用链地址法处理冲突,试构造哈希表,并求等概率下查找成功的平均查找长度答案】(1)哈希表:01234567827 A12311 41A66 AI 52 )I | - 70一 88AASL5*1 2*2 1*38生1.5【答案】还原后的森林:J第三棵树的前序序列 GHIJ ;后序序列HJIG23.假设一棵树的先根序列为 ABCEFIJGHKD后根序列为BEIJFGKHCDA请画出该树 【答案】所以可先得到的(1)因为树的先根和后根遍历序列分别与其转换后对应的二叉树的先根和中根遍历序列相同,(2)根据树与二叉树的转换规则,可得到树如下图所示:19324858220 1 2 345 6 7 8 9 10 11 12其散列函数为h(key)=key%13,处理冲突的方法为双重散列法,探测序列为: hi=(h(key)+i *h1(key))%m i =1,…,m — 1其中h1(key)=key%11+1回答下列问题:(1) 对表中关键字19, 32和22进行查找时,所需进行的比较次数各为多少?(2) 该散列表在等概率查找时查找成功的平均查找长度为多少?【答案】(。