数据结构期中试题C%2B%2B(考题)

合集下载

数据结构期中考试题

数据结构期中考试题

数据结构期中考试题一、选择题1. 数据结构是()的研究。

A. 算法B. 数据C. 硬件D. 软件2. 下列哪种数据结构在插入和删除操作时效率较高?A. 数组B. 链表C. 栈D. 队列3. 以下哪种数据结构使用了先进先出(FIFO)的策略?A. 栈B. 队列C. 链表D. 数组4. 在二叉树中,每个节点最多可以有几个子节点?A. 0B. 1C. 2D. 35. 以下哪种数据结构在查找操作时效率较高?A. 数组B. 链表C. 栈D. 二叉树二、简答题1. 请简要介绍栈(Stack)和队列(Queue)的特点及应用场景。

2. 请解释树(Tree)和图(Graph)的区别,并给出它们各自的应用场景。

3. 请描述二叉树(Binary Tree)的特点并给出一个示例图。

4. 请简要介绍哈希表(Hash Table)的原理及其在实际应用中的优势。

三、编程题1. 设计一个栈,使得它具有以下功能:- push(val):将元素val压入栈中。

- pop():弹出栈顶元素,并返回弹出的元素。

- getMin():返回栈中最小的元素。

2. 设计一个队列,使得它具有以下功能:- push(val):将元素val插入队列中。

- pop():移除并返回队列头部的元素。

- peek():返回队列头部的元素。

- empty():检查队列是否为空。

四、综合题某公司需要设计一个学生信息管理系统,主要功能包括添加学生信息、查询学生信息、删除学生信息以及修改学生信息。

请使用合适的数据结构和算法来实现该系统,并说明你的选择理由。

总结:通过本次期中考试题,我们从选择题、简答题到编程题,对数据结构的基本知识和应用有了更深入的了解。

数据结构在计算机科学中扮演着重要的角色,合理的选择和运用数据结构可以提高程序的效率和性能。

希望大家能够加强对数据结构的学习和应用,为解决实际问题提供更有效的解决方案。

数据结构期中考试题

数据结构期中考试题

一、单项选择题(每小题3分,共30分)1、线性结构是数据元素之间存在的一种_______。

A、一对多关系B、多对多关系C、多对一关系D、一对一关系2、以下数据结构中,哪一个不是线性结构()A.生成树 B. 顺序栈 C. 单链表 D. 循环队列3、设n是偶数,则运行下列程序段的时间复杂度为()。

x=100;for(p=2;p<=n;p++)for(q=2*i;q<=n;q++)x=(x+1)*3;A.O(1) B.O(n) C.O(n2) D.O(lbn)4、若频繁地对线性表进行插入和删除操作,该线性表应该采用——存储结构。

A、散列B、顺序C、链式D、索引5、在非空双向循环链表中由q所指的链结点后面插入一个由p所指的链结点的动作依次为:p->llink=Q;p->rlink=q->rlink;q->rlink=p;_______.(空白处为一条赋值语句) A、q->llink=p B、q->rlink->llink=pC、p->rlink->llink=pD、p->llink->llink=p6、设循环队列的结构是:const int Maxsize=100;typedef int Data Type;typedef struct {Data Type data[Maxsize];Int front, rear;} Queue;若有一个Queue类型的队列Q,试问判断队列满的条件应是下列哪一个语句()A 、Q.front= = Q.rear; B、 Q.front - Q.rear= = Maxsize;C、Q.front + Q.rear= = Maxsize;D、 Q.front= = (Q.rear+1)% Maxsize;7、已知L是一个不带表头的单链表, 在表首插入结点*p的操作是()。

A. p = L; p->next = L;B. p->next = L; p = L;C. p->next = L; L = p;D. L = p; p->next= L;8、下面关于串的叙述中,哪一个是不正确的?( )A.串是字符的有限序列 B.空串是由空格构成的串C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储9、若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则可能出现的出栈序列为( )。

答案_数据结构期中卷

答案_数据结构期中卷

2009—2010学年第1学期《C++与数据结构》期中试卷答案一、选择题(每题1分,共20分)CBDCD ACBCB ACABA CCABD 其中19、20题不要求二、填空题(每空1分,共20分)1.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用__顺序存储结构。

2. 写出使下两个具有尾指针的循环链表连接为一个循环链表的必要的指令序列(可用辅助指针)___node *p=A->next; A->next=B->next; B->next=p; __ ______。

3._队列 __是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。

4.有些错误的地方:n阶下三角矩阵存储时,设第一个元素的存储地址是A,每个元素存储长度为L,则第i行第j列元素的存储地址是 A+i*(i+1)*L/2+j*L 。

5. 广义表(a,(a,b),d,e,((i,j),k)) 的表头是__a_____,表尾是((a,b),d,e,((i,j),k))_,长度是__5______。

6.在链表存储时,加一个头结点的目的是简化运算代码。

7.i=1; while(i<=n) i=i*3;算法时间复杂度为___O(log3n)________ 。

8.设有二维数组A[10][20],其每个元素占两个字节,第一个元素的存储地址为100,若按列优先顺序存储,元素A[6,6]的存储地址为100+6*10*2+6*2=232 。

9. 算术表达式(x+y)/10+a*b/c-(x-y)(a-b)转为后缀表达式后为xy+10/ab*c/+xy-ab-*- 。

10.描述抽象数据类型ADT时,要从以下3个角度(写出英文单词或中文意义)D: data 数据R: Relation 关系P:Process 操作。

11. 一个算法的效率可分为时间效率和空间效率。

数据结构c语言版试题及答案

数据结构c语言版试题及答案

数据结构c语言版试题及答案一、选择题(每题2分,共10分)1. 在C语言中,以下哪个关键字用于定义结构体?A. structB. unionC. enumD. typedef答案:A2. 若有一个结构体数组,下列哪个函数可以用来初始化数组中的每个元素?A. memsetB. memcpyC. strcpyD. bzero答案:A3. 在C语言中,以下哪个函数用于动态分配内存?A. mallocB. callocC. reallocD. all of the above答案:D4. 对于一个链表,以下哪个操作是正确的?A. 插入节点B. 删除节点C. 遍历链表D. all of the above答案:D5. 在C语言中,以下哪个函数用于释放动态分配的内存?A. freeB. mallocC. callocD. realloc答案:A二、填空题(每题3分,共15分)1. 结构体定义的关键字是______。

答案:struct2. 在C语言中,动态分配内存失败时,malloc函数返回______。

答案:NULL3. 单链表的头节点指针通常初始化为______。

答案:NULL4. 双向链表中,每个节点包含______个指针。

答案:两个5. 树的深度优先遍历包括______、中序遍历和后序遍历。

答案:前序遍历三、简答题(每题5分,共20分)1. 请简述C语言中结构体和联合体的区别。

答案:结构体(struct)可以包含不同类型的数据,并且可以有多个实例;联合体(union)可以包含不同类型的数据,但是只能有一个实例,即在任意时刻只能存储其中一个成员的值。

2. 动态内存分配的优点是什么?答案:动态内存分配允许程序在运行时根据需要分配内存,这样可以更有效地使用内存资源,并且可以创建大小不固定的数据结构。

3. 链表相比于数组有哪些优点?答案:链表的优点包括动态大小,可以灵活地插入和删除节点,不需要预先知道数据的大小。

数据结构期中考试试卷参考答案

数据结构期中考试试卷参考答案

数据结构期中考试试卷参考答案1徐州师范大学期中试卷课程名称:数据结构与算法一、单项选择1. B2. A3. B4. C 5. A 6. D 7. C 8. C 9. B 10. D 11. A 12. B 13. C 14. D 15. A 16. C 17. A 18. A 19. D 20. B二、名词解释1. 数据:是所有能被输入到计算机中,且能被计算机处理的符号的集合。

它是计算机操作的对象的总称,也是计算机处理的信息的某种特定的符号表示形式。

2. 算法:通常把具体存储结构上的操作实现步骤或过程称为算法。

3. 递归:在定义一个过程或函数时出现调用本过程或本函数的成分,称之为递归4. 时间复杂度:通常把算法中包含基本运算次数的多少称为算法的时间复杂度,也就是说,一个算法的时间复杂度是指该算法的基本运算次数。

5. 数组:数组是n(n >1)个相同类型数据元素a1,a2,…,an 构成的有限序列,且该有限序列存储在一块地址连续的内存单元中。

三、填空题(每题1分,共10分)1.有穷性、确定性、可行性、输入、输出2. n/2 插入或删除位置3. __O(1) __。

4. 以行序为主序和以列序为主序两种方式。

5. 数据数据元素。

6.元素之间逻辑关系的信息7. 长度各个对应位置上的字符 8.一定不一定。

9.头指针头结点的指针.直接前驱结点指针。

10.数据元素及其关系四、简答题1.答案:(1)结点存储密度。

顺序:结点中只有自身信息域,没有链接信息域,故存储密度大;链式:结点中除自身信息外,还有表示连接信息的指针域,存储密度小。

(2)随机存取。

顺序:可随机访问,直接存取第i 个结点信息;链式:不能随机访问.(3)插入和删除。

顺序:插入、删除,会引起大量结点的移动。

链式:插入、删除灵活方便,不必移动结点,只要改变结点中的指针值即可。

(4)预先分配存储单元.顺序:按最大预分配,存储空间利用率不高;链式:不需要预分配空间,所以存储空间利用率高。

数据结构期中试卷

数据结构期中试卷

《数据结构》期中试卷专业________ 学号_________ 姓名________ 成绩_______一、选择题(本大题共50小题,每小题2分,共100分)1. 若广义表K满足head(K)=tail(K),则K为 ( )A.( )B.( ( ) )C. ( () ),( () )D.( (),(),() )2.若要求尽可能快地对实数数组进行稳定的排序,则应选( )A.快速排序B.堆排序C.归并排序D.基数排序3. 请指出在顺序表{2、5、7、10、14、15、18、23、35、41、52}中,用二分法查找关键码12需做()次关键码比较。

A.2B.3C.4D.54.对包含N个元素的散列表进行查找,平均查找长度( )A.为 O(log2N)B.为O(N)C.不直接依赖于ND.上述三者都不是5.一个栈的输入序列为1,2,3,4,下面哪一个序列不可能是这个栈的输出序列()A. 1,3,2,4B. 2,3,4,1C. 4,3,1,2D. 3,4,2,16.下面关于图的存储的叙述中,哪一个是正确的。

()A.用相邻矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关B.用相邻矩阵法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关C.用邻接表法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关D.用邻接表法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关7. 首先访问结点的左子树,然后访问该结点,最后访问结点的右子树,这种遍历称为( )A.前序遍历B.后序遍历C.中序遍历D.层次遍历8.对一棵查找树根结点而言,左子树中所有结点与右子树中所有结点的关键字大小关系是( )A.小于B.大于C.等于D.不小于9.下面关于B-树和B+树的叙述中,不正确的是 ( )A. B-树和B+树都是平衡的多分树B. B-树和B+树都是可用于文件的索引结构C. B-树和B+树都能有效地支持顺序检索D. B-树和B+树都能有效地支持随机检索10. 给定下列有向图和初始结点V1,按深度优先遍历的结点序列为( )A.V1,V2,V4,V5,V3B.V1,V3,V4,V5,V2C.V1,V2,V5,V3,V4D.V1,V2,V3,V4,V511. 在数据结构中,从逻辑上可以把数据结构分成()。

C语言与数据结构试卷

A\n",grade); break; case 8: printf("%d 的等级是 B\n",
grade); break; case 7: printf("%d 的等级是 C\n", grade); break; case 6:
printf("%d 的等级是 D\n", grade); break; default: printf("%d 的等级是 E\n", grade); break; } }
2. C 语言中的标识符只能由字母.数字和下划线三种字符组成,且第一个字符必须为
字母或数字。 ( )
3. 通过 return 语句,函数可以返回一个或一个以上的返回值。 ( )
4. break 语句用在循环体中,可结束本层循环;continue 语句用在循环体中,可结束
本次循环。
()
5. 在 C 语言中,if(a)语句,当(a= -100) 时不执行 if 后面的语句。
int n, i = 1; long int value = 1; printf("Input n="); scanf_s("%d", &n); do { value = value * i; printf("%2d!= %ld\n", i, value); i++; } while (i <= n);
4. 键盘输入边长为整形数据的三角形各边,计算输出三角形的面积,计算公式如下:
(考核知识点:强制类型转换及常用标准数学函数)
#include
<stdio.h> #include<math.h> int main() {

【精选资料】数据结构期中试题及答案

第 1 页 共 6 页 命题人: 审核人: 试卷分类(A卷或B卷) 五邑大学 试 卷 参考答案及评分标准 学期: 至 学年度 第 学期 课程: 数据结构 课程代号: 006A1060 使用班级: 一、单项选择题(15小题,每小题1分,共15分) 1. 顺序存储结构中数据元素之间的逻辑关系是由( C )表示的。 A.线性结构 B.非线性结构 C.存储位置 D.指针 2. 用数组r存储静态链表,结点的next域指向后继,工作指针j 指向链表中某结点,则j后移的操作语句为( A )。 A.j=r[j].next; B.j=j+1; C.j=j->next; D.j=r[j]->next; 3. 若一个栈的输入序列是1,2,3,…,n,其输出序列是p1,p2,…,pn,若p1=3,则p2的值( C )。 A.一定是2 B.一定是1 C.不可能是1 D.以上都不对 4. 设有两个字符串p和q,求q在p中首次出现的位置的运算称作( B )。 A.连接 B.模式匹配 C.求子串 D.求串长 5. 下述编码中( B )不是前缀编码。 A.(00,01,10,11) B.(0,1,00,11) C.(0,10,110,111) D.(1,01,000,001) 6. 设森林中有4棵树,树中结点的个数依次为n1,n2,n3和n4,则把森林转换成二叉树后,其根结点的右子树上有( D )结点。 A.n1-1 B.n1 C.n1+n2+n3 D.n2+n3+n4 7. 设有如下图所示的AOV网,不可能的拓扑排序结果是( C )。

8. 设哈夫曼编码的长度不超过4,若已经对两个字符编码为1 和01,则最多还可以为( C )个字符编码。 A.2 B.3 C.4 D.5 9. 对于一个具有n个顶点的无向图,若采用邻接矩阵存储,则该矩阵的大小是( D )。 A.n B.(n-1)2 C.n-1 D.n2 10. 堆的形状是一棵( C )。 A.二叉排序树 B.判定树 C.完全二叉树 D.满二叉树 11. 对如图所示的无向连通网图,从顶点v0开始用Prim算法构造最小生成树,在构造过程中加入最小生成树的前4条边依次是( A )。

数据结构期中测试题

数据结构期中测试题一、选择(共30题,共60分)1.下面关于线性表的叙述中,错误的是哪一个?()A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,不必占用一片连续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。

2.链表不具有的特点是:A.可随机访问任一个元素B.插入删除不需要移动元素C.不必事先估计存储空间D.所需空间与线性表长度成正比3.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。

A. 单链表B.单循环链表C. 带尾指针的单循环链表D.带头结点的双循环链表4.在单链表指针为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;5.完成在双循环链表结点p之后插入s的操作是();A. p->next=s ; s->prior=p; p->next->prior=s ; s->next=p->next;B. p->next->prior=s; p->next=s; s->prior=p; s->next=p->next;C. s->prior=p; s->next=p->next; p->next=s; p->next->prior=s ;D. s->prior=p; s->next=p->next; p->next->prior=s ; p->next=s;6.栈和队列的共同点是()。

计05期中数据结构试题及答案

计05期中数据结构试题及答案数据结构期中试题一. 单项选择题(每项选择2分,共48分)1.在数据结构中,从逻辑上可以把数据结构分成___C____。

A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构2.线性表是 A 。

(A) 一个有限序列,可以为空; (B) 一个有限序列,不能为空; (C) 一个无限序列,可以为空; (D) 一个无序序列,不能为空。

3.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。

插入一个元素时平均要移动表中的 B 个元素。

(A) n/2 (B) n+1/2 (C) n -1/2 (D) n 4.用链表表示线性表的优点是 C 。

(A)便于随机存取(B)花费的存储空间较顺序存储少 (C)便于插入和删除(D)数据元素的物理顺序与逻辑顺序相同5.某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用 C 存储方式最节省运算时间。

(A)单链表 (B)双链表 (C)带尾指针的单循环链表 (D)双循环链表6线性表的顺序存储结构是一种_A____的存储结构,线性表的链式存储结构是一种_____的存储结构。

A.随机存取 B.顺序存取 C.索引存取 D.散列存取7、若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用B 存储方式最节省运算时间。

(A) 单链表 (B) 顺序表 (C) 双链表 (D) 单循环链表8.算法分析的目的是___C___,算法分析的两个主要方面是__A____。

①A.找出数据结构的合理性B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进D.分析算法的易懂性和文档性②A.空间复杂性和时间复杂性 B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性9、栈的特点是① B ,栈和队列都是 C ② 。

①、 A、先进先出 B、后进先出②、 A、顺序存储的线性结构C、操作受限的线性结构C、进优于出D、出优于进B、链式存储的线性结构 D、操作受限的非线性结构10、若进队列的序列为1,2,3,4,则 D 是一个出队序列。

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

第 1 页 共 6页 数据结构(C++版)期中考试试题 (2009-2010学年第一学期)

一、单项选择题(每空2分,共40分) 1. 在数据结构中,从逻辑上可以把数据结构分为( )。 A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构 C. 线性结构和非线性结构 D. 内部结构和外部结构 2. 算法分析的目的是( ① ),算法分析的两个主要方面是( ② )。 ① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系 C. 分析算法的效率以求改进 D. 分析算法的易懂性和文档性 ② A. 可读性和文档性 B. 正确性和简明性 C. 数据复杂性和程序复杂性 D. 空间复杂性和时间复杂性 3.在下面关于线性表的叙述中,选出正确的一项( )。 A. 线性表的每一个元素都有一个直接前驱和直接后继 B. 线性表中至少要有一个元素 C. 线性表中的元素必须按递增或递减的顺序排列 D. 除第一个元素和最后一个元素外其余每个元素都有一个且仅有一个直接前驱和直接后继 4.如果进栈序列为e1、e2、e3、e4,则可能的出栈序列是( )。 A. e3,e1,e4,e2 B. e2,e4,e1,e3 C. e1,e2,e3,e4 D. e3,e4,e1,e2 5.设有栈S和队列Q,其初始状态为空,元素e1、e2、e3、e4、e5、e6依次入栈,出栈的元素则进入队列Q,若6个元素出列的顺序是e2、e4、e3、e6、e5、e1,则栈S的容量至少应是( )。 A. 6 B. 4 C. 3 D. 2 6.非空的循环单链表first的尾结点p 满足( )。 A. p->link = = NULL B. p = =NULL C. p->link= =first 第 2 页 共 6页

D. p = =first 7.在循环双链表的p结点之后插入s结点的操作是( )。 A. p->rLink = s ; s->lLink = p ; p->rLink - >lLink = s ; s-> rLink = p->rLink ; B. p ->rLink = s ; p->rLink ->lLink = s ; s->lLink = p ; s->rLink = p - >rLink ; C. s->lLink = p ; s->rLink = p ->rLink ; p->rLink = s ; p->rLink ->lLink = s ; D. s->lLink = p; s->rLink = p ->rLink ; p->rLink ->lLink = s ; p->rLink = s ; 8.对一个满二叉树,m个树叶,n个结点,深度为h,则( )。 A. n=h+m B. h+m=2n C. m=h-1 D. n=2h-1 9.在下列关于二叉树的叙述中,选出正确的一项( )。 A. 在二叉树中,任何一个结点的度数都是2 B. 二叉树的度为2 C. 在二叉树中至少有一个结点的度是2 D. 一棵二叉树的度可以小于2 10.如果一棵二叉树中任一结点的值都大于其左子树中所有结点的值,且小于其右子树中所有结点的值,现欲得到各结点值的递增序列,试问应采用的遍历的方法是( )。 A. 先序遍历 B. 中序遍历 C. 后序遍历 D. 层次遍历 11.

12.按照二叉树的定义,具有3个结点的二叉树有( )种。 A. 3 B. 4 C. 5 D. 6 13.深度为5的二叉树至多有( )个结点。 A. 16 B. 32 C. 31 D. 10 14.已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是( )。 A. head(tail(LS)) B. tail(head(LS)) C. head(tail(head(tail(LS)))) D. head(tail(tail(head(LS))))

如图所示的4棵二叉树中,( )不是完全二叉树。 A B C D 第 3 页 共 6页

15.稀疏矩阵一般的压缩存储方法主要有( )两种。 A. 二维数组和三维数组 B. 三元组和散列表 C. 三元组和十字链表 D. 散列表和十字链表 16.在N个结点的线索二叉树中,线索的数目为( )。 A. N-1 B. N C. N+1 D. 2N 17.在一棵完全二叉树中,若编号为i的结点有左子女,则其左子女的编号为( );若编号为i的结点有右子女,则其右子女的编号为( );编号为i的结点的双亲结点的编号为( )。 A. 2i B. 2i+1 C. 2i-1

D. 2/i 二、填空题(每空1分,共10分) 1. 单链表表示法的基本思想是用 表示结点间的逻辑关系。 2. 在一个循环队列Q中,判断队空的条件为 ,判断队满的条件为 。 3. 中缀表达式A+B*(C-D)-E/F的后缀表示是 。 4. 串是一种特殊的线性表,其特殊性体现在 。 5. 深度为k(设根的层数为1)的完全二叉树至少有 个结点,至多有 个结点。 6. 线索二叉树的左线索指向其 ,右线索指向其 。 7. 下图为某树的双亲表示法存储示意图: 下标 data parent 0 A -1 1 B 0 2 C 0 3 D 1 4 E 2 则结点D、E的双亲结点分别为 。 三、简述下述算法的功能(每小题5分,共20分)

1. (1) template void inverse(T A[],int n) { T temp ; for(int i=0 ;i<=(n-1)/2;i++) { temp=A[i]; A[i]=A[n-i-1]; 第 4 页 共 6页

A[n-i-1]=temp; } } (2) template //链表结点结构定义 struct LinkNode{ T data; LinkNode *link; //构造函数定义 }; template //单链表类定义 class List:public LinearList{ protected: LinkNode *first; public: //成员函数的声明 }; template void List::Inverse() { if(first==NULL)return ; LinkNode *p=first->link,*pr=NULL; while(p!=NULL) { first->link=pr; pr=first; first=p; p=p->link; } first->link=pr; } 2. int Palindrome_Test(){ SeqStack S; SeqQueue Q; char a,b,c; while((c=getchar())!='@') { S.Push(c);Q.EnQueue(c); } while(!S.IsEmpty()) { S.Pop(a);Q.DeQueue(b)); if(a!=b) return 0; } 第 5 页 共 6页

return 1; }//Palindrome_Test 3. (1) int BinaryTree::leaf(BinTreeNode *p){ if(p==NULL) return 0; else if(p->leftChild==NULL&&p->rightChild==NULL) return 1; else return leaf(p->leftChild)+leaf(p->rightChild); } (2) void BinaryTree::exchange(BinTreeNode *p){ BinTreeNode *temp; if(p->leftChild!=NULL||p->rightChild!=NULL){ temp=p->leftChild; p->leftChild=p->rightChild; p->rightChild=temp; exchange(p->leftChild); exchange(p->rightChild); } } 4. template void BinaryTree::printBinaryTree(BinTreeNode *p,int i)//p为指向子树根结点的指针, //i为子树的根结点所在的层次 { if(p!=NULL) { printBinaryTree(p->rightChild,i+1); } for(int j=1;j<=i;j++) cout<<” ”; coutleftChild) printBinaryTree(p->leftChild,i+1); } 四、简答题(每小题5分,共15分)

1. 右图为二叉树,请回答下列问题: (1)给出该二叉树的前序、中序、后序遍历序列; (2)画出该二叉树的中序全线索化树线索示意图; (3)将该二叉树转化为森林,画出森林形态图。 2. 已知一棵二叉树的前序遍历的结果是ABECDFGHIJ,中序遍历的结果是EBCDAFHIGJ,试画出这棵二叉树。 3. 简述Huffman树的概念。某系统使用的六种符号出现概率为:{0.05,0.29,0.07,0.08,0.36,0.10},构造一棵Huffman树,计算其带权路径长度。 五、算法设计题(共15分)

ABCDEFGHI

ABCDEF

若p为指向上图所示的树的根结点的指针,i=1,则输出结果是什么?

相关文档
最新文档