北京理工大学2013级数据结构B试题(A卷)-答案

合集下载

北京理工大学《数据结构》试题及答案(B卷)

北京理工大学《数据结构》试题及答案(B卷)

一、单项选择题1.算法必须具备的三个特性是( )。

A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性C.确定性、有穷性、稳定性D.易读性、稳定性、安全性2.下列数据中,( )是非线性数据结构。

A.栈B.队列C.完全二叉树D.顺序表3.算法分析的两个方面是( )。

A.空间复杂度和时间复杂度B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性4.非空的循环单链表head的尾结点p满足( )。

A.p->next==head B.p->next==NULLC.p==NULL D.p==head5.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是( )。

A.p->next=s;s->next=p->next; B.s->next=p->next;p->next=s;C.p->next=s;p->next=s->next; D.p->next=s->next;p->next=s;6.按照二叉树的定义,具有3个结点的二叉树有( )种。

A.3 B.4C.5 D.67.在一个有向图中,所有顶点的入度之和是所有顶点的出度之和的( )倍。

A.1/2 B.1C.2 D.48.二叉排序树是( )。

A.每一分支结点的度均为2的二叉树B.中序遍历得到一升序序列的二叉树C.按从左到右顺序编号的二叉树D.每一分支结点的值均小于左子树上所有结点的值,大于右子树上所有结点的值9.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别是( )。

A.1和 5 B.2和4C.4和2 D.5和110.下列说法中正确的是( )。

A.堆栈是在两端操作、先进后出的线性表B.堆栈是在一端操作、先进先出的线性表C.队列是在一端操作、先进先出的线性表D.队列是在两端操作、先进先出的线性表11.不带头结点的单链表head为空的判定条件是( )。

2013级软件工程数据结构B卷答案及评分细则

2013级软件工程数据结构B卷答案及评分细则

10级软件工程专业《数据结构》试题B卷答案及评分细则一、选择题(每小题3分,共30分,选错不给分,选对给3分)1,C 2,A 3,D 4,C 5,B 6,C 7,B 8,B 9,A 10,A二、填空题(每空2分,共20分,填对给2分,填错不给分)1,2 4;2,SXSSXXSX3,-+A*BC/DE4,128 75,存储位置指针6,任意若干连续字符序列7,相同类型数据元素三、应用题1 解:其步骤为i1=index(S,S1,1)………………………………………………(2分)i2=index(S,S2,1)+3………………………………………………(2分)sub1=substr(S,i1,length(S)-i1+1) …………………………………(2分)sub2=substr(S,i2,length(S)-i2+1…………………………………………(2分) S3=concat(sub1, sub2) ………………………………………………(2分)2 解本题即为构造最小生成树,按照最小生成树的构造方法,构造如下:303解:其拓扑排序序列为152634;156234;152364;512634;516234;512364;5612344 解:按照题目要求构造的二叉树如下四、算法设计题由于队列是先进先出,而栈是先进后出,所以只有经过两个栈,即先在第一个栈里先进后出,再经过第二个栈后进先出来实现队列的先进先出。

因此用两个栈模拟一个队列运算就是用一个栈作为输入,而另一个栈作为输出。

当进队列时,总是将数据进入到作为输入的栈中。

在输出时,如果作为输出的栈已空,则从输入栈将已输入到输入栈的所有数据压入输出栈中,然后由输出栈输出数据;如果作为输出的栈不空,则就从输出栈输出数据。

显然,只有在输入、输出栈均为空时队列才为空。

…………………………(写出思想给5分)一个栈s1用来插入元素,另一个栈S2用来删除元素,删除元素时应将前一栈s1中的所有元素读出,然后进入到第二个栈s2中,算法描述如下:Void Enqueue(s1,x)……………………………………………(2分)stack s1;int x;{if(s1->top==0)Printf(“队列上溢“);ElsePush(s1,x);}Void Dequeue(s1,s2,x) ……………………………………………(2分)Stack s1,s2;Int x;{ S->top=0; /将s2清空While (!empty(s1) /将s1的所有元素退栈后压入s2,此时栈s1为空 Push(s2,pop(s1));Pop(s2,x); /弹出栈s2的栈顶元素(对首元素)并赋给xWhile (!empty(s2) /将剩于元素重新压入栈s1恢复为原s1中的顺序 Push(s1,pop(s2));}Int Queue_empty(s1)……………………………………………(1分) Stack s1;{if empty(s1)Return(1);ElseReturn(0);}。

(完整版)北京理工大学2013-2014学年第一学期《机械设计基础》期末试题A卷及参考答案

(完整版)北京理工大学2013-2014学年第一学期《机械设计基础》期末试题A卷及参考答案

课程编号:03000138 北京理工大学2013~2014学年第一学期2011级机械设计基础期末试题A卷答案班级学号姓名成绩一、是非题(正确的在括号内划√,错误的划×,每题2分,共10分)1. 滚动轴承座圈和滚动体的常用材料是45钢调质。

(F)2. 在铰链四杆机构中,压力角越小,机构的传动性能越好。

(T)3. 带传动中对带的疲劳寿命影响最大的应力是小带轮上的弯曲应力(T)4. 只要是渐开线标准齿轮,在齿轮齿廓上任一位置处的压力角都应为国家标准值20o(F)5. 滚动轴承为标准件,为便于互换和生产,轴承内圈孔与轴的配合应采用基轴制(F)二、选择题(把正确的答案选项填入空格内,每题2分,共20分)1. 利用范成法加工渐开线标准齿轮时,若被加工的齿轮(D )太小,就会发生根切现象。

A 模数B 压力角C 齿厚D 齿数2. 设计凸轮时,若工作行程中的最大压力角大于许用压力角,则应(A)。

A 增大基圆半径B 减小基圆半径C 增大滚子半径D 减小滚子半径3. 只承受弯矩而不传递转矩的轴称为(C )。

A 传动轴B 转轴C 心轴D 曲轴4. 为了提高齿轮的齿面接触疲劳强度,可以(B )。

A 加大模数B 加大中心矩C 减小齿宽系数D 减小啮合角5. 键的长度主要是根据( B )来选择。

A传递转矩大小 B 轮毂长度 C 轴直径 D 键剖面尺寸6. 被连接件受横向外力作用时,如采用普通螺栓连接,则螺栓可能的失效形式为(C )。

A 剪切破坏B挤压破坏 C 拉、扭联合作用下断裂D 拉、扭联合作用下塑性变形7. 在载荷不平稳且有较大冲击和振动的情况下,一般宜选用(C)联轴器。

A 刚性B 无弹性元件挠性C 有弹性元件挠性D 安全8. 在同样载荷和同样工作条件下运转的同一批生产的同型号的滚动轴承,它们的寿命一般(B)。

A 相同B 不相同C 90%轴承相同D 10%轴承相同9. 在轴的初步计算中,轴的直径是按(B)进行初步确定的。

北京理工大学2013级数据结构B试题(A卷)_答案模板

北京理工大学2013级数据结构B试题(A卷)_答案模板

、选择题1从逻辑结构上可以把数据结构分为【 A 、动态结构和静态结构 C 、线性结构和非线性结构2、在一个长度为n 的顺序存储的线性表中,向第i 个元素(n+1)之前插入一个新元 素时,需要从后向前依次后移【 B 】个元素。

4、在一个单链表中,已知q 所指结点是p 所指结点的前驱结点,若在q 和p 之间插入s 结点, 则执行【C 】。

A 、 s->next = p->next; p->next = s; B 、 p->next = s->next; s->next = p; C 、 q->next = s; s->next = p; D p->next = s; s->next = q;5、 一个栈的入栈序列是1, 2, 3, 4, 5,则栈不可能输出的序列是【C 】。

A 、54321B 、45321C 、43512D 123456、 判断一个队列Q (元素最多为Mt )为空的条件是【C 】。

A 、Q->rear —Q->front = M B 、Q->rear —Q->front -1 ==M C 、Q->rear == Q->frontD Q->rear + 1 == Q->front7、 在一个链队列中,假设f 和r 分别指向队首和队尾,贝朋入s 所指结点的运算是【A 】A 、r->next = s; r=s;B 、f->next = s; f=s;C 、s->next = r; r=s;D s->next = f; f=s;8深度为5的二叉树至多有【A 】个结点。

A 、31B 、32C 16D 109、 在一非空二叉树的中序遍历序列中,根结点的右边【 A 】。

A 、只有右子树上的所有结点B 、只有右子树上的部分结点C 、只有左子树上的所有结点B 、只有左子树上的部分结点10、 如果一棵完全二叉树有1001个结点,则其叶子结点个数为【D 】。

北京理工大学数据结构试题及答案

北京理工大学数据结构试题及答案

北京理工大学数据结构 10 年期末试题数据结构试卷(一)、单选题(每题 2 分,共 20 分)1. 栈和队列的共同特点是 ()。

A. 只允许在端点处插入和删除元素B. 都是先进后出C. 都是先进先出D. 没有共同点2. 用链接方式存储的队列,在进行插入运算时 ().A. 仅修改头指针B. 头、尾指针都要修改C.仅修改尾指针D.头、尾指针可能都要修改10.设有 6个结点的无向图,该图至少应有 ()条边才能确保是一个连通图。

A.5B.6C.7D.8二、填空题(每空 1 分,共 26 分)1. 通常从四个方面评价算法的质量: ____________ 、 ________ 、 ________ 和 __________ 。

2. 一个算法的时间复杂度为(n 3+n 2log 2n +i4n )/n 2,其数量级表示为 ____________ 。

3. 假定一棵树的广义表表示为A ( C ,D ( E ,F ,G ),H ( I ,J )),则树中所含的结点数为 __________ 个,树的深度为 ____________ 树的度为 __________ 。

4. 后缀算式 9 2 3 +- 10 2 / -的值为 _________ 。

中缀算式( 3+4X ) -2Y/3 对应的后缀算式 为 ________________________________ 。

5.若用链表存储一棵二叉树时, 每个结点除数据域外, 还有指向左孩子和右孩子的两个指 针。

在这种存储结构中, n 个结点的二叉树共有 ___________ 个指针域,其中有 ________ 个 指针域是存放了地址,有 __________________ 个指针是空指针。

3. 4. 5. 以下数据结构中哪一个是非线性结构? ()A. 队列B. 栈C. 线性表D. 二叉树设有一个二维数组 A [m ][n ],假设A [0][0]存放位置在644伽A [2][2]存放位置在676(io ), 每个元素占一个空间,问A .688B . 树最适合用来表示 (A.有序数据元素A [3][3](IO )存放在什么位置?脚注(io 表示用10进制表示。

02331数据结构2013年10月份历年真题附答案

02331数据结构2013年10月份历年真题附答案

绝密★考试结束前全国2013年10月高等教育自学考试数据结构试题课程代码:02331请考生按规定用笔将所有试题的答案涂、写在答题纸上。

选择题部分注意事项:1. 答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。

2. 每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。

如需改动,用橡皮擦干净后,再选涂其他答案标号。

不能答在试题卷上。

一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。

错涂、多涂或未涂均无分。

1.算法的时间复杂度表征的是A.算法的可读性B.算法的难易程度C.执行算法所耗费的时间D.执行算法所耗费的存储空间2.对需要频繁插入和删除结点的线性表,适合的存储方式是A.顺序储存B.链式存储C.索引存储D.散列存储3.在头指针为head的循环链表中,判断指针变量P指向尾结点的条件是A.p->next->next==head B.p->next==headC.p->next->next==NULL D.p->next==NULL4.迪杰斯特拉(Dijkstra)算法的功能是A.求图中某顶点到其他顶点的最短路径B.求图中所有顶点之间的最短路径C.求图的最小生成树D.求图的拓扑排序序列5.若栈的进栈序列为1,2,3,4,5,则经过出入栈操作不可能...获得的出栈序列是A.4,5,3,2,1 B.4,3,5,1,2C.1,2,3,4,5 D.5,4,3,2,16.A是7×4的二维数组,按行优先方式顺序存储,元素A[0][0]的存储地址为1 000,若每个元素占2个字节,则元素A[3][3]的存储地址为A.1015 B.1016C.1028 D.10307.深度为4的完全二叉树的结点数至少为A.4 B.8C.13 D.158.若采用邻接矩阵A存储有向图G,则结点k的入度等于A中A.结点k对应行元素之和B.结点k对应列元素之和C.结点k对应行和列元素之和D.非零元素之和9.无向图G的邻接矩阵一定是A.对称矩阵B.对角矩阵C.三角矩阵D.单位矩阵10.下列关于有向带权图G的叙述中,错误..的是A.图G的任何一棵生成树都不含有回路B.图G生成树所含的边数等于顶点数减1C.图G含有回路时无法得到拓扑序列D.图G的最小生成树总是唯一的11.在下列排序算法中,关键字比较次数与初始排列次序无关的是A.冒泡排序B.希尔排序C.直接插入排序D.直接选择排序1 2.对下图进行拓扑排序,可以得到的拓扑序列是A.a b c d e B.b a c d eC.b c a d e D.a b d c e13.下列线性表中,能使用二分查找的是A.顺序存储(2,12,5,6,9,3,89,34,25) B.链式存储(2,12,5,6,9,3,89,34,25) C.顺序存储(2,3,5,6,9,12,25,34,89) D.链式存储(2,3,5,6,9,12,25,34,89) 14.在下列查找方法中,平均查找长度与结点数量无直接关系的是A.顺序查找B.分块查找C.散列查找D.基于B树的查找15.下列排序算法中,时间复杂度为O(nlog2 n)的算法是A.快速排序B.冒泡排序C.直接选择排序D.直接插入排序非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。

2012 ~ 2013学年第二学期-数据结构期中试卷_北理珠(2013-5-11)

2012 ~ 2013学年第二学期-数据结构期中试卷_北理珠(2013-5-11)

A. SA+141B. SA+180C. SA+186D. SA+2107、用无回溯的模式匹配法(KMP法)求串“ababab”的next[j]的值为()。

A. 010101B. 011221C. 011233D. 011234C.可链接存储D. 数据元素可以是多个字符8、链表不具有的特点是()。

A. 可随机访问任一元素B. 插入删除不需要移动元素C. 不必事先估计存储空间D. 所需空间与线性表长度成正比9、中缀表达式A*(B+C)/(D-E+F)的后缀表达式是()。

A. A*B+C/D-E+FB. AB*C+D/E-F+C. ABC+*DE-F+/D. ABCDEF*+/-+10、已知输入序列为abcd,经过输出受限的双端队列后能得到的输出序列是()。

A. dacbB. cadbC. dbcaD. 以上都不是二、填空题(每空2.5分,共25分)【得分:】1、有如下递归函数:int func(int n){if(n<2) return(n);else return(func(n-1)+func(n-2));}执行语句printf(“%d\n”,func(4));的结果是。

2、若一个算法中的语句频度之和为T(n)=3n+n*log2n+n2,则算法的时间复杂度为O(_ ___)。

3、不带头结点的单链表head为空的条件是。

4、假设为循环队列分配的向量空间为Q[20](下标从0开始),若队列的长度和队头指针值分别为13和17,则当前队尾指针的值为。

5、将一个A[15][15]的对称矩阵采用只存储下三角中元素的压缩存储(第一个元素为A[0][0]),按行优先存入一维数组B[120]中,A中元素[3][7]在B 数组中的位置为。

6、广义表运算式HEAD(TAIL((a,b,c),(x,y,z)))的结果是。

7、已知L是带头结点的非空单链表,删除首元结点的三条语句为:P=L->next;;free(P);8、表长为N的顺序表,当在任何位置上插入或删除一个元素的概率相等时,第2页共7页第 3 页 共 7 页……………………………………………装………………………………订…………………………线……………………………………………………此处不能书写此处不能书写此处不能书写 此处不能书写此处不能书写 此处不能书写此处不能书写插入一个元素所需移动元素的平均次数为: ;删除一个元素需要移动的元素个数为: 。

北京理工大学2013级数据结构B试题(A卷)_答案模板

北京理工大学2013级数据结构B试题(A卷)_答案模板

一、选择题1、从逻辑结构上可以把数据结构分为【 C 】。

A、动态结构和静态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构2、在一个长度为n的顺序存储的线性表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需要从后向前依次后移【 B 】个元素。

A、n-iB、n-i+1C、n-i-1D、i3、链表结构不具有下列【 B 】特点。

A、插入和删除无需移动元素B、可随机访问链表中的任意元素C、无需实现分配存储空间D、所需空间与结点个数成正比。

4、在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行【C】。

A、s->next = p->next; p->next = s;B、p->next = s->next; s->next = p;C、q->next = s; s->next = p;D、p->next = s; s->next = q;5、一个栈的入栈序列是1,2,3,4,5,则栈不可能输出的序列是【 C 】。

A、54321B、45321C、43512D、123456、判断一个队列Q(元素最多为M个)为空的条件是【 C 】。

A、Q->rear – Q->front = MB、Q->rear – Q->front -1 ==MC、Q->rear == Q->frontD、Q->rear + 1 == Q->front7、在一个链队列中,假设f和r分别指向队首和队尾,则插入s所指结点的运算是【 A 】。

A、r->next = s; r=s;B、f->next = s; f=s;C、s->next = r; r=s;D、s->next = f; f=s;8、深度为5的二叉树至多有【 A 】个结点。

A、31B、32C、16D、109、在一非空二叉树的中序遍历序列中,根结点的右边【 A 】。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、选择题1、从逻辑结构上可以把数据结构分为【 C 】。

A、动态结构和静态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构2、在一个长度为n的顺序存储的线性表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需要从后向前依次后移【 B 】个元素。

A、n-iB、n-i+1C、n-i-1D、i3、链表结构不具有下列【 B 】特点。

A、插入和删除无需移动元素B、可随机访问链表中的任意元素C、无需实现分配存储空间D、所需空间与结点个数成正比。

4、在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行【 C 】。

A、s->next = p->next; p->next = s;B、p->next = s->next; s->next = p;C、q->next = s; s->next = p;D、p->next = s; s->next = q;5、一个栈的入栈序列是1,2,3,4,5,则栈不可能输出的序列是【C 】。

A、54321B、45321C、43512D、123456、判断一个队列Q(元素最多为M个)为空的条件是【 C 】。

A、Q->rear – Q->front = MB、Q->rear – Q->front -1 ==MC、Q->rear == Q->frontD、Q->rear + 1 == Q->front7、在一个链队列中,假设f和r分别指向队首和队尾,则插入s所指结点的运算是【A 】。

A、r->next = s; r=s;B、f->next = s; f=s;C、s->next = r; r=s;D、s->next = f; f=s;8、深度为5的二叉树至多有【 A 】个结点。

A、31B、32C、16D、109、在一非空二叉树的中序遍历序列中,根结点的右边【A 】。

A、只有右子树上的所有结点B、只有右子树上的部分结点C、只有左子树上的所有结点B、只有左子树上的部分结点10、如果一棵完全二叉树有1001个结点,则其叶子结点个数为【D 】。

A、250B、500C、502D、49011、在一个图中,所有顶点的度数之和是所有边数的【 C 】倍。

A、1/2B、1C、2D、412、采用邻接表存储的图的深度优先遍历算法类似于二叉树的【A 】。

A、先序遍历B、中序遍历C、后序遍历D、按层遍历13、一个有n个顶点的无向图最多有【 D 】条边。

A、nB、n(n-1)C、2nD、n(n-1)/214、静态查找表与动态查找表的根本区别在于【B 】。

A、它们的逻辑结构不同B、施加在其上的操作不同C、所包含的数据元素类型不同D、存储实现不一样15、顺序查找适用于存储结构为【 C 】的线性表。

A、哈希存储B、压缩存储C、顺序存储或链式存储D、索引存储16、若一颗二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足【B 】。

A、所有结点均无孩子B、所有结点均无右孩子C、只有一个叶子结点D、是一颗满二叉树17、二叉排序树是【B 】。

A、每一分支结点的度均为2的二叉树B、中序遍历得到一升序序列的二叉树C、按从左到右顺序编号的二叉树D、每一分支结点的值均小于左子树上所有结点的值,又大于右子树上所有结点的值18、具有12个记录的序列,采用冒泡排序最少的比较次数是【 C 】。

A、1B、144C、11D、6619、堆的形状是一棵【C 】。

A、二叉排序树B、满二叉树C、完全二叉树D、平衡二叉树20、在一个包含n个顶点e条边的无向图的邻接矩阵中,零元素的个数为【D 】。

A、eB、2eC、n2-eD、n2-2e二、判断对错【x 】1、具有n个顶点的连通图至少有n条边。

【x 】2、链表的单个结点内部的存储空间可以是不连续的。

【√】3、栈和队列的共同点是只允许在端点处插入和删除元素。

【√】4、使用循环队列可以解决队列顺序存储时的假溢出问题。

【x 】5、要想通过遍历序列还原为惟一二叉树,应当知道其先序序列和后序序列。

【√】6、若一个结点是某二叉树子树的中序遍历序列的第一个结点,则它也必是该子树的后序遍历序列的第一个结点。

【x 】7、完全二叉树可采用顺序存储结构存储,非完全二叉树则不能。

【√】8、对于一棵含有n个结点的完全二叉树,将其结点按从上到下且从左至右按1至n进行编号,则对其任意一个编号为i的结点,如果它有左孩子,则其左孩子结点的编号为2i。

【√】9、哈夫曼树的所有子树也都是哈夫曼树。

【x 】10、当图的边较少而结点较多时,求其最小生成树用Prim算法比用Kruskal 算法效率更高。

三、填空题1、向量的第一个元素的存储地址是200,每个元素的长度是3,那么第6个元素的存储地址是。

答案:2152、在一个带头结点的单链表中,p所指结点既不是首元结点,也不是尾元结点,删除p 结点的语句序列是、、。

答案: q=p,p=p->next,free(q)3、设堆栈有足够的存储空间,那么向堆栈中插入一个数据元素,即入栈的操作过程是、。

答案: 存入数据元素,栈顶指针加14、一般情况下,向循环队列中插入数据元素时,需要判满队列是否已经满了,判断条件是:。

答案: (rear+1)%MaxSize == front6、已知循环队列用数组data[1…n]存储元素值,front和rear分别表示队头和队尾指针,则当前队列中元素的个数为。

答案: (n+rear-frone)%n或(n+rear-frone) mod n7、深度为k的二叉树最多有个结点,深度为k的完全二叉树最少有个结点(k≥1)。

答案: 2k-1,2k-18、如以{2,3,6,7,9}作为叶子结点的权值构造哈夫曼树,则其最短带权路径长度为。

答案: 5510、已知某二叉树的中序序列和前序序列分别为42758136、12457836,则它的后序序列为。

答案: 4785263112、在有n个顶点的有向图中,每个顶点的度最大可达到。

答案: 2(n-1)13、在有序表A[1…18]中,采用折半查找算法查找元素值等于A[7]的元素,所比较过的元素的下标依次为。

答案: 9 4 6 714、一组记录的输入顺序为(25,38,65,90,72,14),则利用堆排序方法建立的初始“小顶堆”为。

答案: 14,38,25,90,72,65四、简答题1、设有一段正文是由字符集{a, b, c, d, e, f, g, h}组成,正文长度为100个字符,其中每个字符在正文中出现的次数分别为17, 12, 14, 4, 10, 9, 20, 3。

若采用哈夫曼树对这段文字进行压缩存储,请完成如下工作:(1)构造哈夫曼树(规定权值较小的结点为左子树);(2)求出每个字符的哈夫曼编码;(3)若其中一段正文的二进制编码序列为“10111100011000101”,请按(2)的哈夫曼编码将其译码成原始正文。

答案:(1)树的结构为:(2)编码为a=111,b=101,c=110,d=0001,e=100,f=001,g=01,h=0000 (3)上述编码序列的对应原文为:badegg2、一棵有11个结点的二叉树的存储情况如下图所示(其中“∧”表示空指针),left[i]和right[i]分别表示结点i的左、右孩子,根结点是序号为3的结点,要求:(1)画出该二叉树;(2)分别写出该二叉树的前序和中序遍历序列。

第2题图答案:(1)二叉树的结构如图所示:(2)前序序列ALKRSECFMBD中序序列RKSLEAFCBDM3、设数据集合D={2, 24, 12, 15, 32, 9, 10, 35, 7, 5},要求:(1)依次读取D中的各个数据,构造一棵二叉排序树Bt;(2)如何根据此二叉树Bt求得数据集合D的一个有序序列?并写出该有序序列;(3)画出在上述二叉树中删除结点“12”后得到的二叉树结构。

答案:(1)构造的二叉排序树如下:(2)上述二叉树Bt的中序遍历序列即是数据集合D的一个有序序列:2,5,7,9,10,12,15,24,32,35(3)删除结点12后的二叉树结构为下面任意一种结构:或者4、用深度优先和广度优先遍历算法对下图G进行遍历(要求从顶点A出发),请给出深度优先和广度优先遍历序列。

第4 题图答案:深度优先序列:ABFDEGHC广度优先序列:ABCFDEHG5、对于如下所示的加权无向图,写出用Prim算法构造最小生成树的过程,并画出最后得到的最小生成树。

第5题图答案:最小生成树的构造过程如下图所示:五、按照指定功能,完成下列算法1、逆置带头结点的单链表Lvoid inverse(LinkList &L) {p=L->next; L->next=NULL;while ( p) {succ=p->next;p->next=L->next;L->next=p;p = succ;}}2、算术表达式求值的算符优先算法。

设OPTR和OPND分别为运算符栈和运算数栈,OP为运算符、界限符集合。

operandType EvaluateExpression( ){InitStack(OPTR); Push (OPTR, #);InitStack(OPND); c=getchar( );while ( c!=‘#’|| GetTop(OPTR)!=‘#’ ){if (! In (c, OP)){Push(OPND, c);c=getchar( );}elseswitch ( Precede(GetTop(OPTR), c ){case <:Push(OPTR, c); c=getchar( ); break;case =:Pop(OPTR, x); c=getchar( ); break;case >:Pop ( OPTR, theta);Pop ( OPND, b); Pop(OPND, a);Push ( OPND, Operate(a, theta, b) );break;} //switch} //whilereturn GetTop(OPND);} //EvaluateExpression3、中序遍历递归算法void InOrderTraverse ( BiTree T , Status ( * Visit ) ( ElemType e ) ) { // 采用二叉链表存贮二叉树,visit( )是访问结点的函数// 本算法中序遍历以T为根结点指针的二叉树if ( T ){InOrderTraverse ( T->lchild, Visit );Visit ( T->data );InOrderTraverse ( T->rchild, Visit );}} //InOrderTraverse4、在有序表ST中折半查找法查找其关键字等于key的数据元素。

相关文档
最新文档