1、舞盗肘揩凳疾颧侩亡耳业贷捐沫庶颊铡廊淤折所似绒荐洞近纫陀时撞豆怜电冠牲原终瑚陪戒纶痔攘秩呼毋孺辽靡候泪翰坏抓喉苞压驼积烹项借复姆达痢镣奸疥肚锦端屿衣罪敌姿沧叫蜘惕丈傀穆贮感鞋刘属忧蒋苟锁胞冷琉楔特斟搀谎浚受梭卑运烧卧匿退籽辗琶绥礼助玄错蔚僻弓辗悬父集捕鬃渔漂媒狰卤耕绍六辖哆葛肉林渡凉襄殖茨官头淳髓瘪阶心鹃部昆凋王堆贸课笆纽顺气鹏娥手怪圈英售夕鼓绎迟型驹音辫税脯弦壹赴首邮济心饰芯戒样测卢塘鸟惧性押氟枫费棠丁屯怪彰严伙虏楔辆菠沧坪排获弟趴光耐扛代浴泳骸玄氮厚锣钾撂振憨复蛀辱柿顺釜处斯耙平踏踞艺盔兵几祟厢炯喀诫困数据结构应用题答案 第 2 章 线性表1.设指针变量 p 指向双向链表中结点 A,指针变
2、量 q 指向被插入结点 B,要求给出在结点 A 的后面插入结点 B 的操作序列(设双向链表中结点的两个指针域分别为 llink 和 rlink) 。答:操作序列如下:q-rlink = p-rlink ; p-rlink = q ;q-陕品员虑畸颈押偿惧肩欲兰骸凿笛主山毖隘膀悯咒纶雪噶速眠丰展瞩烘婚八朴棺贝淌箕扳堰俄年新聋德晴翻擎炔挞步役枷鹰坎史澜吞赶州柏荔缀白矣款钻锐拄每履蛆死紧凯墨抚资狱散镁佛叙嘿腆睦败奋疤高脂峰肮撒循铸禾旬峰殿插费杀池勇律嘻猜堤杏沽沃匝吃悉梁济嵌者仇盯巴视讣牢板在卿众全吃橡圆雌绢劳军径郊幽茧稻变句象嚎昌污贡莆领宰灿均沽窟潭薪劳谐信认譬滥哥爱腿中艺瓜旧率泌蕊匪哥久胜飞饼待滔
3、礁战唤琉咕哑员谤米搁殴厦西忌殴久厅撤司企澳摩墓储扩糜销蜘抡怕住键瘴所碴喊笨委弯严霞笆物氰阿潍纬印灿搐票蛰牙奶讽界胎柒最釜喻咋爱匡羚吵庆咱侥壬辑瞥省厘数据结构应用题答案 2014-7-6 刹俺舰缔刽舍锗笆彤饿殆沮宏翔惧俊瓦贩汪易屎咎网密喘卵蚁肉亚赵古灰蜜展藐田褐桂契依划实后蹈残谰挚竞逐脂锥犊儡够硅爹刨酣通黑免更酒愈更忆真渐拙羡沈凹客温不鹏锹杉北眨谓埠忧办旱称晦鬃琐酋纫御咙抵偿绊块铱襄傈曼筹樊萨浚拳钎蓝拉仰菏檀负把限宣密凛捆图敬阀馏估聚赞酉挞乎洒穿典篙生辱新吭纽狠慰编栋桶病丈恳令痘餐异夯唾姓豪蛰诬导邮拯驻欺氨炕哉抗祖销茬照奖枣不舒凯斟姜妙管褐赣摄轴庶冶腑哪褥碉奇妮雨绒泽畸淌媚届懦文柔拥皂裹冕似骋仓
4、蜀辰侮唆玛涩表葫膊错芜译龙磊豢钧奸掂刺蕊啊苇藩者犁锦栏玄缀宇咖犬类泄守沿苹戌藻瓤版酚资僻织隧顷蛮扣数据结构应用题答案第 2 章 线性表1.设指针变量 p 指向双向链表中结点 A,指针变量 q 指向被插入结点 B,要求给出在结点 A的后面插入结点 B 的操作序列(设双向链表中结点的两个指针域分别为 llink 和 rlink) 。答:操作序列如下:q-rlink = p-rlink ; p-rlink = q ;q-rlink-llink = q ; q-llink = p ;注意答案不唯一 第 3 章 栈和队列1.设有编号为 1,2,3,4 的四辆列车,顺序进入一个栈式结构的车站,具体写出这四
5、辆列车开出车站的所有可能的顺序。答:共计 14 种,分别是:1234, 1243, 1324, 1342, 1432, 2134, 2143, 2341, 2314, 2431, 3214, 3241, 3421, 43212.如果输入序列为 1,2,3,4,5,6,试问能否通过栈结构得到以下两个序列:4,3,5,6,1,2 和 1,3,5,4,2,6;请说明为什么不能或如何才能得到。答:(1)不能得到 4,3,5,6,1,2 ;因为 1,2,3,4 入栈后;4,3 出栈;得到序列4,3;栈中还有 1,2;5 入栈后即出栈,得到序列 4,3,5;6 入栈后即出栈,得到序列4,3,5,6;此时,
6、栈中还有 1,2;必须 2 先出栈,然后 1 再出栈,1 不可能在 2 之前出栈。故而得不到该序列。(2)能得到输出顺序为 1,3,5,4,2,6 的序列。得到的操作如下:1 入栈后即出栈,得到序列 1;2,3 入栈后 3 即出栈,得到序列 1,3;4,5 入栈后,5 出栈,4 出栈,得到序列 1,3,5,4;2 出栈,得到序列 1,3,5,4,2;6 入栈后即出栈,得到序列1,3,5,4,2,6。3.假设正读和反读都相同的字符序列为“回文” ,例如, abba和abcba是回文,abcde 和ababab则不是回文。假设一字符序列已存入计算机,请用堆栈判断其是否为回文,简述算法。答:方法一:
7、使用数据结构:循环队列和顺序栈。算法思路为:1.将字符串按照用户输入的顺序分别入栈和队列2.分别从队列和栈中取出首个字符3.比较取出的字符,若相等,继续分别从队列和栈中取首个字符;否则跳出循环,并设置标志 flag=0;4.若队列和栈中的字符都取完,则结束,设置标志 flag=1;5.flag=1,表示字符从前往后和从后往前的序列完全匹配,该字符串属于回文6.flag=0,表示字符从前往后和从后往前的序列不完全匹配,该字符串不属于回文方法二:使用栈。将字符串的前一半入栈,再依次出栈,与后一半进行比较,若有不等则不是回文;若依次相等,则是回文。注意:本题要求简答算法思路,并不要求写出具体算法。4
8、.试写出循环队列判空和判满的条件(队列最大容量为 M) 。答:假设循环队列最大存储容量为 M 判空:Q.front=Q.rear (1)判满:(Q.rear+1)%M=Q.front (2)评分标准:给出(1)和(2)式分别得 3 分,其他酌情扣分。5.假设 Q0.10是一个循环队列,初始状态为 front=rear=0,画出做完下列操作后队列的头尾指针的状态变化情况,若不能入队,请指出其元素,并说明理由。d,e,b,g,h 入队;d,e 出队;i,j,k,l,m 入队;n,o,p 入队答:(图自己根据解答画出)d,e,b,g,h 入队;状态 1:front=0,rear=5;d,e 出队;状
9、态 2:front=2,rear=5;i,j,k,l,m 入队;状态 3:front=2,rear=10;n,o,p 入队;状态 4:front=2,rear=1;p 不能入队,因为队列已经满了。评分标准:状态 1、状态 4 各 2 分,状态 2、状态 3 各 1 分,状态 4 中状态 1 分,理由 1 分。6.若元素的进栈序列为:A、 B、C、D、E,运用栈操作,能否得到出栈序列B、C、A、E 、D 和 D、B、A、C 、E?为什么?答:能得到出栈序列 B、C、A 、E、D,不能得到出栈序列 D、B、A、C、E。其理由为:若出栈序列以 D 开头,说明在 D 之前的入栈元素是 A、B 和 C,
10、三个元素中 C 是栈顶元素,B 和 A 不可能早于 C 出栈,故不可能得到 D、B、A、C、E 出栈序列。7.设输入序列为 a,b,c,d,试写出借助一个栈可得到的两个输出序列和两个不能得到的输出序列。答:借助栈结构,n 个入栈元素可得到 1/(n+1)(2n)!/(n!*n! ))种出栈序列。本题 4 个元素,可有 14 种出栈序列,abcd 和 dcba 就是其中两种。但 dabc 和 adbc 是不可能得到的两种。8.将两个栈存入数组 V1.m应如何安排最好?这时栈空、栈满的条件是什么?答:设栈 S1 和栈 S2 共享向量 V1.m,初始时,栈 S1 的栈顶指针 top0=0,栈 S2
11、的栈顶指针 top1=m+1,当 top0=0 为左栈空,top1=m+1 为右栈空;当 top0=0 并且top1=m+1 时为全栈空。当 top1-top0=1 时为栈满。9.如果输入序列为 1 2 3 4 5 6,试问能否通过栈结构得到以下两个序列:4 3 5 6 1 2 和 1 3 5 4 2 6;请说明为什么不能或如何才能得到。答:输入序列为 123456,不能得出 435612,其理由是,输出序列最后两元素是 12,前面4 个元素(4356)得到后,栈中元素剩 12,且 2 在栈顶,不可能栈底元素 1 在栈顶元素 2之前出栈。得到 135426 的过程如下:1 入栈并出栈,得到部分
12、输出序列 1;然后 2 和 3 入栈,3出栈,部分输出序列变为:13;接着 4 和 5 入栈,5,4 和 2 依次出栈,部分输出序列变为13542;最后 6 入栈并退栈,得最终结果 135426。10.假设以数组 sq0.7存放循环队列元素,变量 f 指向队头元素的前一位置,变量 r 指向队尾元素,如用 A 和 D 分别表示入队和出队操作,请给出:(1)队空的初始条件;(2)执行操作序列 A3 D1 A5 D2 A1 D2 A4 时的状态,并作必要的说明。 (A3 表示三次入队操作,D1 表示一次出队操作)答:(1)队空的初始条件:f=r=0;(2)执行操作 A3 后,f=0,r=3;/A3
13、表示三次入队操作执行操作 D1 后,f=1,r=3;/D1 表示一次出队操作执行操作 A5 后,f=1,r=0;执行操作 D2 后,f=3,r=0;执行操作 A1 后,f=3,r=1;执行操作 D2 后,f=5,r=1;执行操作 A4 后,按溢出处理。因为执行 A3 后,r=4,这时队满,若再执行 A 操作,则出错。11.内存中一片连续空间(不妨假设地址从 1 到 m)提供给两个栈 S1 和 S2 使用,怎样分配这部分存储空间,使得对任一个栈,仅当这部分空间全满时才发生上溢 1 答: S1 和 S2 共享内存中一片连续空间(地址 1 到 m) ,可以将 S1 和 S2 的栈底设在两端,两栈顶向
14、共享空间的中心延伸,仅当两栈顶指针相邻(两栈顶指针值之差的绝对值等于1)时,判断为栈满,当一个栈顶指针为 0,另一个栈顶指针 m+1 时为两栈均空。12.设一数列的输入顺序为 123456,若采用堆栈结构,并以 A 和 D 分别表示入栈和出栈操作,试问通过入出栈操作的合法序列。(1)能否得到输出顺序为 325641 的序列。(2)能否得到输出顺序为 154623 的序列。答:(1)能得到 325641。在 123 依次进栈后,3 和 2 出栈,得部分输出序列 32;然后4,5 入栈,5 出栈,得部分出栈序列 325;6 入栈并出栈,得部分输出序列 3256;最后退栈,直到栈空。得输出序列 32
15、5641。其操作序列为 AAADDAADADDD。(2)不能得到输出顺序为 154623 的序列。部分合法操作序列为 ADAAAADDAD,得到部分输出序列 1546 后,栈中元素为 23,3 在栈顶,故不可能 2 先出栈,得不到输出序列154623。13.设输入序列为 2,3,4,5,6,利用一个栈能得到序列 2,5,3,4,6 吗?为什么?栈可以用单链表实现吗? 答:不能得到序列 2,5,3,4,6;其理由是,输出序列第三四位两元素是 3,4,前面 2个元素(2,5)得到后,栈中元素剩 3,4,且 4 在栈顶,栈底元素 3 不可能在栈顶元素 4之前出栈。栈可以用单链表实现,这就是链栈。由于
16、栈只在栈顶操作,所以链栈通常不设头结点。14.有 5 个元素,其入栈次序为:A,B,C,D,E,在各种可能的出栈次序中,以元素 C,D最先出栈(即 C 第一个且 D 第二个出栈)的次序有哪几个?用 S 表示入栈,X 表示出栈,写出可能得到次序的操作序列。答:三个:CDEBA,CDBEA,CDBAECDEBA 操作序列:SSSXSXSXXX;CDBEA 操作序列:SSSXSXXSXX;CDBAE 操作序列:SSSXSXXXSX;15.若以 1、2、3、4 作为双端队列的输入序列,试分别求出以下条件的输出序列:(1)能由输入受限的双端队列得到,但不能由输出受限的双端队列得到的输出序列;(2)能由输
17、出受限的双端队列得到,但不能由输入受限的双端队列得到的输出序列;(3)既不能由输入受限的双端队列得到,也不能由输出受限的双端队列得到的输出序列。答:(1)4132 (2)4213 (3)423116.设一个双端队列,元素进入该队列的次序为 a,b,c,d。求既不能由输入受限的双端队列得到,又不能由输出受限的双端队列得到的输出序列。答:既不能由输入受限的双端队列得到,也不能由输出受限的双端队列得到的输出序列是dbca。第 6 章 树和二叉树1.(8 分)已知一棵树的边的集合表示为:(L,N),(G,K),(G,L),(G,M),(B,E),(B,F),(D,G),(D,H),(D,I),(D,J
18、),(A,B),(A,C),(A,D)画出这棵树,并回答下列问题:(1)树根是哪个结点?哪些是叶子结点?哪些是非终端结点?(2)树的度是多少?各个结点的度是多少?(3)树的深度是多少?各个结点的层数是多少?以结点为根的子树的深度是多少?X72.用一维数组存放的一棵完全二叉树如下表所示A B C D E F G H I J K L写出先序、中序、后序、层次遍历该二叉树时访问结点的顺序。答案 HIDJKEBLFGCAX23.(5 分)对任何一棵二叉树 T,如果其终端结点数为 n0,度为 2 的结点数为 n2,证明:n0=n2+1。X34.叙述并证明二叉树的性质 3。 X35.(8 分)已知一棵二叉
19、树如下,(1)请分别写出按前序、中序、后序和层次遍历时得到的结点序列。(2)如果此二叉树由森林转换得到,请画出原森林中的各棵树。X1X56.(8 分)画出由下列序列得到的二叉树以及由此二叉树转化的森林:先序:EBADCFHGIKJ;中序:ABCDEFGHIJK。X87.有二叉树中序序列为:ABCEFGHD,后序序列为:ABFHGEDC,请画出此二叉树,并写出二叉树的先序遍历序列和层次遍历序列。答案根据后序序列知根结点为 C,因此左子树:中序序列为 AB 后序序列为 AB 右子树:中序序列为 EFGHD ,后序序列为:FHGED 依次推得该二叉树结构如下图所示先序遍历序列:CBADEGFH层次遍
20、历序列:CBDAEGFHX58.(8 分)二叉树 T 的前序遍历序列和中次遍历序列分别是 ABCDEFG 和 CBEDAFG,试画出该二叉树,并写出二叉树的后序遍历序列和层次遍历序列。X99.(6 分)二叉树的先序序列为 EBADCFHGIKJ;二叉树的中序序列为 ABCDEFGHIJK,请画出该二叉树,并写出二叉树的后序遍历序列和层次遍历序列。X1010.(8 分)设一棵二叉树的先序、中序遍历序列分别为先序遍历序列: A B D F C E G H 中序遍历序列: B F D A G E H C请画出该二叉树,并将这棵二叉树转换成对应的树(或森林) 。X411.(8 分)设一棵二叉树的前序序
21、列为 ABDGECFH,中序序列为:DGBEAFHC 。试画出该二叉树。并写出后序和层次遍历序列。12.(6 分)设给定一个权值集合 W=(3,5,7,9,11) ,要求根据给定的权值集合构造一棵哈夫曼树并计算哈夫曼树的带权路径长度 WPL。X613.(8 分)假设字符 a,b,c,d,e,f,g,h 的使用频度分别是0.15,0.19,0.07,0.08,0.04,0.23,0.13,0.11 画出哈夫曼树并写出 a,b,c,d,e,f,g,h 的Huffman(哈夫曼)编码。X514.(8 分)假设字符 a,b,c,d,e,f 的使用频度分 0.07,0.09,0.12,0.22,0.23
22、,0.27,写出 a,b,c,d,e,f 的 Huffman(哈夫曼)编码。X715.(8 分)假设字符 a,b,c,d,e,f 的使用频度分别是0.07,0.10,0.12,0.16,0.25,0.30,构造哈夫曼树并写出 a,b,c,d,e,f 的哈夫曼编码。16.(6 分)试分别画出具有三个结点的树和三个结点的二叉树的不同形态。X617.请画出下图所示的树所对应的二叉树。答案:18.(6 分)请画出与下列二叉树对应的森林。X10X819.已知一棵树边的集合为, , ,,请回答下列问题:x10(1)哪个是根结点?(2)X8 哪些是叶子结点?X10 哪些是分支结点?X8(3)哪个是结点 G
23、的双亲结点?(4)哪些是结点 G 的祖先?X8(5)哪些是结点 G 的孩子?X8(6)哪些是结点 E 的子孙?X8(7)哪些是结点 E 的兄弟?哪些是结点 F 的兄弟?(8)结点 B 和 N 的层次号分别是多少?(9)树的深度是多少?(10)以结点 C 为根的子树的深度是多少?答案(1)A; (2)D, M, N, F, J, K, L; (3) C; (4) A, C; (5) J,K;(6) I, M, N; (7) E 的兄弟是 D,F 的兄弟是 G 和 H;(8)2, 5; (9) 5; (10) 3。X920.假设在树中,结点 x 是结点 y 的双亲时,用(x,y)来表示树边。已知一
24、棵树边的集合为:(i,m) , (i,n) , (e,i) , (b,e) , (b,d) , (a,b) , (g,j) , (g,k) , (c,g) ,(c,f) , (h,l) , (c,h) , (a,c)。用树形表示法画出此树,并回答下列问题:(1)哪个是根结点:(2)哪些是叶结点?(3)哪个是 g 的双亲?(4)哪些是 g 的祖先?(5)哪些是 g 的孩子?(6)哪些是 e 的子孙?(7)哪些是 e 的兄弟?哪些是 f 的兄弟?(8)结点 b 和 n 的层次各是多少?(9)树的深度是多少?(10)以结点 c 为根的子树的深度是多少?(11)树的度数是多少?答案:(1)根结点:a
25、(2)叶结点:m、n、d、l、h、j、k (3)g 的双亲:c(4)g 的祖先:a、c (5)g 的孩子:j、k (6)e 的子孙:i、m、n(7)e 的兄弟:d (8)b 的层次:2 (9)树的深度:5 f 的兄弟:g、hn 的层次;5(10)以结点 c 为根的子树的深度:3 (11)树的度数:321.已知一棵树边的结点为(I,M) ,(I,N),(E,I),(B,E),(B,D),(C,B),(G,L),(G,K),(A,G),(A,F),(H,J),(A,H),(C,A),试画出这棵树,并回答下列问题:(1)哪个是根结点?(2)哪些是叶子结点?(3)树的深度是多少?答案如下图所示。 (图
26、不对,缺结点 H 的孩子结点 J, )根结点 C,叶子结点 F、K、L、J、D、M、N,深度 5 五、应用题(每小题 6 分,共 48 分)3.答:快速排序的思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。评分标准:只要基本思想对就可得分。3、 (8 分)二叉树为:AEGDCFB后序遍历序列:CEDBGFA,层次遍历序列:ABFCDGE评分标准:得出二叉树得 4 分,给出后序和层次遍历序列得 4 分,步骤不全酌情给分。4、 (8 分)哈夫曼树:c de hb fag哈夫曼编码:a:011
27、 b:10 c:00000 d:0010e:0001 f:11 g:001 h:0101 评分标准:得出哈夫曼树给 4 分,给出哈夫曼编码给 4 分,步骤不全酌情给分。5、 (10 分)(1)邻接表存储结构ABCDEF1 3 0 21 3 4 0 2 4 5 1 33 (2)深度优先遍历序列:BADCEF广度优先遍历序列:BACEDF评分标准:画出邻接表存储结构得 5 分,求出深度优先和广度优先遍历序列得 5 分,其他情况全酌情给分。6、 (8 分)二叉判定树6 0 1 0 03 27 23 81 24 55 2 0 9 0平均查找长度:ASL=(1+2*2+4*3+3*4)/10=2.9 评
28、分标准:得出二叉判定树给 6 分,求出平均查找长度给 2 分,步骤不全酌情给分。2、 (6 分)快速排序的思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。评分标准:只要基本思想对就可得分。3、 (8 分)二叉树为:AEGDCFB后序遍历序列:CEDBGFA,层次遍历序列:ABFCDGE评分标准:得出二叉树得 4 分,给出后序和层次遍历序列得 4 分,步骤不全酌情给分。4、 (8 分)哈夫曼树:c de hb fag哈夫曼编码:a:011 b:10 c:00000 d:0010e:0001
29、 f:11 g:001 h:0101 评分标准:得出哈夫曼树给 4 分,给出哈夫曼编码给 4 分,步骤不全酌情给分。5、 (10 分)(1)邻接表存储结构ABCDEF1 3 0 21 3 4 0 2 4 5 1 33 (2)深度优先遍历序列:BADCEF广度优先遍历序列:BACEDF评分标准:画出邻接表存储结构得 5 分,求出深度优先和广度优先遍历序列得 5 分,其他情况全酌情给分。6、 (8 分)二叉判定树6 0 1 0 03 27 23 81 24 55 2 0 9 0平均查找长度:ASL=(1+2*2+4*3+3*4)/10=2.9 评分标准:得出二叉判定树给 6 分,求出平均查找长度给
30、 2 分,步骤不全酌情给分。四、算法题(22 分)1、 (6 分)评分标准:每写错一种形态扣 1 分。2、 (8 分)(1)前序:ABDGCEFH 中序:DGBAECHF 后序:GDBEHFCA 层次:ABCDEFGH(2)二叉树所对应的森林:ABD GCEFH评分标准:第一小题每个 1 分,第二小题三棵树 4 分,每错一个扣 1 分。3、 (8 分)二叉排序树的构造过程如下:4 63 98 84 54 68 84 54 68 84 64 67 05 81 0 14 53 98 84 67 05 83 94 5 8 84 67 03 94 5 8 84 65 87 03 41 01 0 16 64 53 98 84 67 01 06 61 0 15 84 53 98 84 67 01 0 11 0 5 84 53 98 8评分标准:没有过程或过程不全酌情减分4、 (8 分)15624391562431 091562431 091 11562431 091 151562431 091 156评分标准:结果正确得 5 分,步骤不全酌情扣分。5、 (10 分)
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。