2009秋-数据结构B-经0806-试卷A卷答案--武守秋、邸书灵
2009年9月计算机等考三级数据库试题及参考答案

11、在建立表结构时定义关系完整性规则( )A.使DBS能够自动维护数据完整性约束条件B.还需要编程实现数据完整性约束条件C.没有必要定义D.将使系统操作复杂【参考答案】A12、段页式存储管理汲取了页式管理和段式管理的长处,其实现原理结合了页式和段式管理的基本思想,即( )A.用分段方法来分配和管理存储空间,用分页方法来管理地址空间B.用分段方法来分配和管理地址空间,用分页方法来管理存储空间C.用分段方法来分配和管理主存空间,用分页方法来管理辅存空间D.用分段方法来分配和管理辅存空间,用分页方法来管理主存空间【参考答案】B13、ODBC是( )A.客户机与服务器之间的接口标准B.数据库查询语言标准C.数据库应用开发工具标准D.数据安全性标准【参考答案】A14、概念模型( )A.依赖于DBMS和硬件B.独立于DBMS和硬件C.依赖于DBMSD.独立于DBMS【参考答案】B15、概念结构设计的目标是产生数据库概念结构(即概念模式),这结构主要反映( )A.DBA 的管理信息需求B.应用程序员的编程需求C.企业组织的信息需求D.数据库的维护需求【参考答案】A16、在概念设计和逻辑设计之间起桥梁作用的是( )A.DFDB.E-R 图C.数据结构图D.功能模块图【参考答案】B17、有两个实体集,并且它们之间存在着一个M∶N联系,根据概念E模型转换成关系数据库的规则,这个E结构转换成表的个数为( )A.1B.2C.3D.418、在数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它是数据库设计的( )阶段。
A.概念模型B.逻辑模型C.结构模型D.物理模型19、E-R图是数据库设计的工具之一,它适用于建立数据的( )A.中继器B.桥接器C.路由器D.网关20、在关系数据库设计中,设计关系模式是( )的任务。
A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段When you are old and grey and full of sleep,And nodding by the fire, take down this book,And slowly read, and dream of the soft lookYour eyes had once, and of their shadows deep;How many loved your moments of glad grace,And loved your beauty with love false or true,But one man loved the pilgrim soul in you,And loved the sorrows of your changing face;And bending down beside the glowing bars,Murmur, a little sadly, how love fledAnd paced upon the mountains overheadAnd hid his face amid a crowd of stars.The furthest distance in the worldIs not between life and deathBut when I stand in front of youYet you don't know thatI love you.The furthest distance in the worldIs not when I stand in front of youYet you can't see my loveBut when undoubtedly knowing the love from both Yet cannot be together.The furthest distance in the worldIs not being apart while being in loveBut when I plainly cannot resist the yearningYet pretending you have never been in my heart. The furthest distance in the worldIs not struggling against the tidesBut using one's indifferent heartTo dig an uncrossable riverFor the one who loves you.倚窗远眺,目光目光尽处必有一座山,那影影绰绰的黛绿色的影,是春天的颜色。
2009年《数据结构》试卷A答案

西华大学课程考试参考答案(A卷)课程代码: 8401801 试卷总分: 100 分一、单项选择题参考答案及评分标准:(本大题共20个小题,每小题2分,共40分)评分标准:选对一题得2分,不选或选错得0分。
1-5:CBACC 6-10:CCBDB 11-15:ABCCD 16-20:CADDC二、算法理解题参考答案及评分标准:(本大题共3个小题,第1、2小题各7分,第3小题6分,共20分)评分标准:请根据各解答步骤酌情给分。
1. 解:构造过程各图(略),最后结果为:2. 解:设权w=(5,29,7,8,14,23,3,11),可构造一棵赫夫曼树如下图所示。
所得赫夫曼编码为:A: 0110B: 10C: 1110D: 1111E: 110F: 00G: 0111H: 0103. 解:(1)希尔排序第一趟(增量d=5)排序后 7、12、36、23、12、51、60、55、72、49第二趟(增量d=3)排序后 7、12、36、23、12、51、49、55、72、60第三趟(增量d=1)排序后 7、12、12、23、36、49、51、55、60、72(2)归并排序第一趟排序后 12、51、23、55、7、49、36、60、12、72第一趟排序后 12、23、51、55、7、36、49、60、12、72第三趟排序后 7、12、23、36、49、51、55、60、12、72第四趟排序后 7、12、12、23、36、49、51、55、60、72三、算法设计题参考答案及评分标准:(本大题共4个小题,每小题10分,共40分)评分标准:请根据编程情况酌情给分。
1. 参考答案示例:void DelInsert(LinkList &L){∥本算法将带头结点的非空单链表L中数据域值最小的那个结点移到链表的最前面。
p=L->next;∥p是链表的工作指针pre=L;∥pre指向链表中数据域最小值结点的前驱。
q=p;∥q指向数据域最小值结点,初始假定是首元结点while (p->next!=NULL){ if(p->next->data<q->data){ pre=p;q=p->next;} ∥找到新的最小值结点 p=p->next;}if (q!=L->next){ pre->next=q->next;∥将最小值结点从链表上摘下q->next= L->next;∥将q结点插到链表最前面L->next=q;}}//DelInsert2. 参考答案示例:void Count(BiTree T,int &n0,int &n){//统计二叉树T上叶结点数n0和非叶结点数n。
2009年9月答案解析

2009年9月二级VF笔试真卷参考答案一、选择题(1)C)【解析】根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类:线性结构和非线性结构。
循环队列、带链队列和带链栈都是线性结构,而二叉树是非线性结构。
(2)B)【解析】栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据;队列是“先进先出”(FIFO)或“后进后出”(LILO)的线性表。
(3)D)【解析】所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。
在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。
循环队列的主要操作是:入队运算和退队运算。
每进行一次入队运算,队尾指针就进一。
每进行一次退队运算,排头指针就进一。
当rear或front等于队列的长度加1时,就把rear 或front值置为1。
所以在循环队列中,队头指针可以大于队尾指针,也可以小于队尾指针。
(4)A)【解析】算法的空间复杂度是指执行这个算法所需要的内存空间。
这个内存空间包括算法程序所占的空间,输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
(5)B)【解析】耦合性与内聚性是模块独立性的两个定性标准。
一般一个较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
(6)A)【解析】结构化设计方法的主要原则可以概括为自顶向下、逐步求精、模块化限制使用goto语句。
(7)C)【解析】N-S图把整个程序写在一个大框图内,这个大框图是由若干个小的基本框图构成的流程图。
E-R图即实体-联系图(Entity Relationship Diagram),提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
PAD是问题分析图,用二维树形结构的图表示程序的控制流,将这种图转换为程序代码比较容易。
全国计算机等级考试三级数据库技术真题2009年9月

全国计算机等级考试三级数据库技术真题2009年9月(总分:104.00,做题时间:90分钟)一、{{B}}选择题{{/B}}(总题数:58,分数:64.00)1.数字信号处理器由于在其内部设计了能够高速处理多路数字信号的电路,可以用在需要快速处理大量复杂数字信号的领域。
下列哪一个设备不需要数字信号处理器(分数:1.00)A.雷达B.彩色电视机√C.数字音视频设备D.数字图像处理设备解析:2.八进制数1507转换成十进制数是多少(分数:1.00)A.833B.839 √C.840D.841解析:[解析] (1507)8=1×83+5×82+7×80=(839)103.数据包要求从源主机出发,最终到目的主机。
下列哪一个设备可为数据包选择输出路径,将它从一个网络传送到另一个网络(分数:1.00)A.通信线路B.路由器√C.WWW服务器D.调制解调器解析:[解析] 数据包从源主机出发,通常需要经过多个路由器才能达到目的主机,所经过的路由器负责将数据包正确地从一个网络传送到另一个网络。
当数据包经过多个路由器,最终被送到目的网络后,目的主机就可以接收到该数据包,并对数据包进行处理。
4.当电子邮件软件从邮件服务器读取邮件时,可以使用下列哪一个(些)协议Ⅰ.简单邮件传输协议SMTP Ⅱ.邮局协议POP3 Ⅲ.交互式邮件存取协议IMAP(分数:1.00)A.仅ⅠB.仅ⅡC.仅Ⅱ和Ⅲ√D.仅Ⅰ和Ⅲ解析:[解析] 在电子邮件程序向邮件服务器中发送邮件时,使用的是简单邮件传输协议(SMTP,simple Mail Transfer Protocol);而在电子邮件程序从邮件服务器中读取邮件时,可以使用邮局协议(POP3,Post Office Protocol)或交互式邮件存取协议(IMAP,Interactive Mail Access Protocol)协议,它取决于邮件服务器支持的协议类型。
数据结构2009年课后答案【khdaw_lxywyl】

数据结构 2009 年习题参考答案
第一章
教材 数据结构(c 语言版)第一版 作者 李云清等
概论
课 后 答 案 网
概念题从略 1.10 (1)O(1) (2)O(n) (3)O(n2)
第二章 线性表的顺序存储
m 2.2
int number_of_x_sequence_list(sequence_list slt,datatype x)
h }
2.4
k void insert_order_sequence_list(sequence_list *slt,datatype x)
{int i=0;
. if(slt->size==MAXSIZE) {printf("\n 顺序表是满的!没法插入!");exit(1);} i=find_num_sequence_list(slt,x); winsert_pos_sequence_list(slt,i,x); }
课 后 答 案 网
(1) bn=1/(n+1)*2n!/(n!*n!) (2) 递 推 公 式 : F(n)=F(0)*F(n-1)+F(1)*F(n-2)+F(2)*F(n-3)+…+F(n-1)*F(n-n);( 其 中
n>=1,F(0)=1) 具体的完成实现程序如下: #include <stdio.h> int stk[21],out[21]; void go(int n,int intop,int outtop,int in) {
{
. p=p->next;
} }
welse
{
wwhile(p&&p->info<p->next->info)
09年数据结构试卷B

湖南商学院课程考核试卷(B )卷课程名称:数据结构学分: 32、给出下列程序段的时间复杂度。
(n为正整数)1)i=1; k=0;while (i<=n-1) { k+=10*i; i++}2) k=0;for (i=1; i<=n; i++)for (j=1; j<=n; j++) { k++;}3) i=1; j=0;while (i+j<=n) {if (i>j) j++;else i++;}4) x=n; y=0;While (x>=y*y) {y++;}5) count=0; x=2;while (x<=n) {x*=2; count++;}第2页共7页3、何为栈和队列?简述两者的区别和联系。
4、画出和下列二叉树对应的森林。
第3页共7页二、算法及应用题(每小题15分,共60分)5、请写出前序、中序、后序遍历该树的结果。
第4页共7页----------------------------------------------------------- 装订线(考生答题不要超过此装订线)----------------------------------------------------------------------- 6、请简要说明快速排序算法的基本思想。
并关键码序列{248,159,43,970,549,585,134,220,18,53}为例,给出快速排序第1趟每一步的执行结果(以第一元素为分界元素,按关键码值递增顺序,每处理1个元素算1步,当前处理元素请用下划线标明)。
第5页共7页7、请简要说明图的广度优先遍历算法的基本思路。
并以如下邻接表所示的图为例,给出自顶点C出发进行广度优先遍历的访问序列。
第6页共7页8、已知线性表中的元素以值递增有序排列,并以带表头结点的单链表为存储结构,结点结构定义如下。
试编写算法,删除表中所有值大于等于mink且小于等于maxk的元素,同时释放被删结点空间。
2009考研数据结构试题点评
2009考研数据结构试题点评第一篇:2009考研数据结构试题点评2009年考研计算机专业综合考试数据结构试题点评2009年考研计算机专业综合考试是统一命题后的首次考试。
本次考试统考科目包括四门计算机专业课:数据结构、计算机组成原理、操作系统和计算机网络,这四门课程合在一起称为计算机科学专业基础综合,共150分。
其中数据结构占45分。
总体上来看,2009年的考研数据结构试题注重对基础知识的考察。
重点考察的是对基本知识点、基本概念的理解。
在基础题中又有拔高,重点考察了对基础知识的应用能力、应变能力和实际动手能力。
题目总的来说不难,没有出现超出考试大纲的题目。
下面我们对2009的考研数据结构试题进行简要的点评。
一、单项选择题,每小题2分,共80分。
单选题覆盖了大纲列出的各章的知识点,主要考察对各种数据结构、基本查找和排序算法的基本概念和特点的理解以及灵活运用。
1-10题是数据结构部分的试题。
1.为解决计算机与打印机之间速度不匹配的问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。
该缓冲区的逻辑结构应该是A.栈B.队列C.树D.图点评:此题考察对各种数据结构的特点的理解及应用。
栈的特点是后进先出。
队列的特点是先进先出。
树的特点是除根以外的结点有且只有唯一的前驱(双亲)。
图是最复杂的数据结构,它的任一结点都可以有多个前驱和后继。
据题意“输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据”,处理应是先来先服务,因此答案为B。
2.设栈S和队列Q的初始状态均为空,元素abcdefg依次进入栈S。
若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是bdcfeag,则栈S的容量至少是A.1 B.2 C.3 D.4 点评:此题考察对栈和队列的特点及基本操作的应用。
根据元素的出队顺序可知元素的进栈、出栈顺序,从而判断栈中同时容纳多少元素,得出栈的容量。
数据结构样卷答案09级
③ 改正:函数体最后增加以下一句: element[len] = '\0'; (3) 深拷贝创建二叉树时,没有为各结点建立指向父母结点的链。改正如下: ① 当 TriNode 构造函数不指定 parent 时 template <class T> TriNode<T>* TriBinaryTree<T>::copy(TriNode<T> *p) { TriNode<T> *q=NULL; if (p!=NULL) { q = new TriNode<T>(p->data); q->left = copy(p->left); if (q->left!=NULL) q->left->parent = q; q->right = copy(p->right); if (q->right!=NULL)
//一次匹配
} if (q!=NULL) { front=start; start=start->next; } else { q=list.head->next;
南京工程学院
试题评分标准及参考答案(样)
2010 / 2011 学年第 2 学期 课程所属部门: 计算机工程学院 使用班级:计算机专业 2009 级各班 课程名称: 数据结构 制作人:叶核亚、黄纬 2011 年 5 月 24 日 共7页 第 1 页
一.
(2) (3) (4) (5) (6) (7)
填空题(26 分,每空 2 分)
pk 与 p j 比较
0 a -1
1 b 0 ≠
2 c 0 ≠ 0
3 a 0 = -1
4 a 1 = 1
数据结构B模拟试卷及答案-推荐下载
A.3 B.5 C.8 D.9 10.用某种排序方法对线性表(25,84,21,47,15,27,68,35,20)进行排序时,元 素序列的变化情况如下: 25,84,21,47,15,27,68,35,20 15,84,21,47,25,27,68,35,20 15,20,21,47,25,27,68,35,84 15,20,21,25,47,27,68,35,84 . . 15,20,21,25,27,35,47,68,84 则采用的排序方法是( )。 A.冒泡排序 B.快速排序 C.归并排序 D.选择排序 二、求解题(共计 59 分) 1.已知二叉树的扩展前序序列:FKHφφBEφφφGAφφDφCφφ.请画出该二叉树 并写出该树的中序和后序序列。(12 分)
5.循环队列用数组 A[0,m-1]存放其元素值,已知其头尾指针分别是 front 和 rear,则当前队列中的元素个数是()。 A.(rear-front+m)%m B.read-front+1 C.read-front-1 D.read-front
6.设二维数组 a[0…m-1][0…n-1]按行优先顺序存储在首地址为 loc(a00)的存 储区域中,每个元素占 d 个单元,则 aij 的地址为________。 A. loc(a00) +( i×n+ j) ×d B. loc(a00) +(j×m+i) ×d C. loc(a00) +((j-1)×n+i-1) ×d D. loc(a00) +((j-1)×m+i-1) G=<V,E>,其中 V={a,b,c,d,e},E={(a,b),(a,e),(b,e),(b,c),(c,e),(e,d)}.请 画出图 G 的邻接矩阵,邻接表。从结点 a 出发,分别写出按深度优先搜索法和广 度优先搜索法进行遍历的结点序列。(12 分)
自考02331数据结构真题及答案(2009-2018)
自考02331数据结构真题及答案(2009-2018)自考02331数据结构真题及答案(2009-2018)数据结构是计算机科学与技术领域中的一门基础课程,通过研究数据的组织、存储和管理方式,以及不同数据结构之间的相互关系和运算方法,提高算法效率和问题解决能力。
在自考02331数据结构课程中,真题及其答案对于学生来说是很重要的复习资料。
本文将提供自考02331数据结构真题及答案的综合整理,希望对广大自考学子的备考有所帮助。
一、2009年自考02331数据结构真题及答案1. (1) 数据除了数值外还可以是什么类型的?答:数据除了数值类型外还可以是字符型、字符串型、布尔型等。
(2) 数据的逻辑结构和物理结构分别指什么?答:数据的逻辑结构指数据之间的关系及其运算规律,如线性结构、树形结构、图形结构等;数据的物理结构指数据在计算机内存中的存储方式,如顺序存储、链式存储等。
2. 用C语言编写一个递归函数,计算n的阶乘。
答:以下是一个计算n的阶乘的递归函数的C语言代码:```cint factorial(int n) {if(n == 0 || n == 1) {return 1;}return n * factorial(n-1);}```二、2018年自考02331数据结构真题及答案1. 请给出二叉树的定义,并用C语言实现二叉树的结点结构。
答:二叉树是一种特殊的树结构,每个结点最多有两个子结点。
以下是用C语言实现二叉树结点结构的代码:```ctypedef struct BinaryNode {int data; // 结点存储的数据struct BinaryNode* left; // 左子结点指针struct BinaryNode* right; // 右子结点指针} BinaryNode;```2. 请解释线性表的顺序存储和链式存储,并分别给出其对应的存储结构。
答:线性表是一种数据元素之间存在一对一关系的数据结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0110
0001 + 2 * 36= 257
1 0
61
1
22
1
36
1
10 11
25
0 C6 0
5
1
11
C2 1
6
C7
1
4
C5
C3
C8
C1
C4
四、算法设计(15 分) 1. 写一个算法把输入的十进制数转换成二进制数。 (7 分) 【解答】 void conversion( ) { InitStack(S);//构造空栈 scanf (“%d”,N);
Vj
S 8.
{v0,v2} {v0,v2,v4} {v0,v2,v3,v4} {v0,v2,v3,v4,v5}
假定用于通信的电文仅由 8 个字母 c1, c2, c3, c4, c5, c6, c7, c8 组成, 各字母在电文中 出现的频率分别为 5, 25, 3, 6, 10, 11, 36, 4。 试为这 8 个字母设计不等长 Huffman 编码, 并给出该电文的总码数。 (8 分) 【解答】 已知字母集 { c1, c2, c3, c4, c5, c6, c7, c8 },频率 {5, 25, 3, 6, 10, 11, 36, 4 },则 Huffman 编码为 c4 c5 c6 c7 c8 c1 c2 c3 0000 0111 001 010 10 11 电文总码数为 4 * 3 + 4 * 4 + 3 * 10 + 3 * 11+ 4 * 5 + 4 * 6+ 2 * 25 0 0 0 0
v0
v4
20
v1
5
v2
50
v3
【解答】 终点 从 v0 到各终点的 D 值和最短路径的求解过程 i=1 V1 ∞ i=2 ∞ i=3 ∞ i=4 ∞
第4页 共6页
i=5 ∞ 无
V2 V3 V4 V5
10 (v0,v2) ∞ 60 50 (v0,v2,v3) (v0,v4,v3)
30 30 (v0,v4) (v0,v4) 100 100 (v0,v5) (v0,v5) V2 v4 90 (v0,v4,v5) v3 60 (v0,v4,v3,v5) V5
第6页 共6页
第3页 共6页
6.
下图是一个连通图,请画出以顶点①为根的深度优先生成树。(5 分)
⑨ ⑩ ③ ①
⑧ ② ④
⑧
⑦ ⑥ ⑤
【解答】以顶点①为根的深度优先生成树:
⑨ ⑩ ③ ①
⑦ ② ⑥ ⑤
④
7.
用迪杰斯特拉算法求源点 v0 到其余各顶点的最短路径,请写出求解过程(7 分)
v5
100 60 30 10 10
10. 在一个无向图中,所有顶点的度数之和等于所有边数的( C )倍。 (A)1/2 (B)1 (C)2 (D)4 二、填空题(每空 2 分,共 20 分) 的有限集合,R 是 D 1. 数据结构被形式地定义为(D, R) ,其中 D 是 数据元素 上的 关系 有限集合。 2. 数据项 是数据的不可分割的最小单位。 3. 向一个长度为 n 的顺序表的第 i 个元素(1≤i≤n+1)之前插入一个元素时,需向后移动 n-i+1 个元素。 4. 向栈中压入元素的操作是先 移动栈顶指针 ,后 存入元素 。 由一个或多个空格(仅由空格 5. 不包含任何字符(长度为 0)的串 称为空串; 符)组成的串 称为空白串。 6. 假设有二维数组 A6×8,行列下标从 0,0 开始。每个元素用相邻的 6 个字节存储,存 储器按字节编址。已知 A 的起始存储位置(基地址)为 1000,末尾元素 A57 的第一 ;若按行存储时,元素 A14 的第一个字节地址为 个字节地址为 1282 (8+4)×6+1000=1072 。 三、简答题(每小题 5 分,共 40 分) 1. 计算下列程序中 x=x+1 的语句频度 for(i=1;i<=n;i++) for(j=1;j<=i;j++) for(k=1;k<=j;k++) x=x+1; 【解答】x=x+1 的语句频度为: T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n)=n(n+1)(n+2)/6 2. 下面是出栈的算法,请把填上语句 //----- 栈的顺序存储表示 ----#define STACK_INIT_SIZE 100;//初始分配量 #define STACKINCREMENT 10;//分配增量 typedef struct { SElemType *base;//栈底指针 SElemType *top;//栈顶指针 int stacksize;//栈容量 } SqStack; Status Pop (SqStack &S, SElemType &e) { // 若栈不空,则删除 S 的栈顶元素,
第2页 共6页
// 用 e 返回其值,并返回 OK; // 否则返回 ERROR if (S.top == S.base) return ERROR; e = *--S.top; return OK;} 3. 写出下列程序段的输出结果(队列中的元素类型 QElem Type 为 char) 。 void main( ){ Queue Q; Init Queue (Q); Char x=’e’; y=’c’; EnQueue (Q,’h’); EnQueue (Q,’r ’); EnQueue (Q, y); DeQueue (Q,x); EnQueue (Q,x); DeQueue (Q,x); EnQueue (Q,’a’); while(!QueueEmpty(Q)){ DeQueue (Q,y);printf(y); }; Printf(x); } 【解答】输出为“ char”。 4. 已知 L 是无表头结点的单链表,且 P 结点既不是首元结点,也不是尾元结点,请写 出在 P 结点后插入 S 结点的核心语句序列。 【解答】此题答案不唯一,但若从已给定序列中挑选,则限制颇多。 Q=P; 已知 P 结点,则不必“顺藤摸瓜” ,直接链 P=L; 接即可。 while(P->next!=Q)P=P->next; S->next=P->next; P=Q; P->next=S; S->next=P->next; P->next=S; 5. 给定二叉树的两种遍历序列,分别是:前序遍历序列:D,A,C,E,B,H,F,G, I;中序遍历序列:D,C,B,E,H,A,G,I,F,试画出二叉树 B,并简述由任 意二叉树 B 的前序遍历序列和中序遍历序列求二叉树 B 的思想方法。 【解答】方法是:由前序先确定 root,由中序可确定 root 的左、右子树。然后由其左子 树的元素集合和右子树的集合对应前序遍历序列中的元素集合,可继续确定 root 的左右 孩子。将他们分别作为新的 root,不断递归,则所有元素都将被唯一确定,问题得解。 D A C E B H G I F
第5页 共6页
while(N){ Push(S, N%2); N=N/2; } while(! StackEmpty(S)) { Pop(S,e); printf(“ %d”,e); } }//conversion 2. 写一个中序遍历二叉树 T 的非递归算法,采用二叉链表作为存储结构。 (8 分) 【解答】 typedef struct BiTNode { //结点结构 TElemType data; struct BiTNode *lchild, *rchild; // 左右孩子指针 } BiTNode, *BiTree; Status InOrderTraverse(BiTree T,Status(*Visit)(TElemType e)) { InitStack(S); Push(S,T); //根指针进栈 While(!StackEmpty(S)){ While(GetTop(S,p)&&p) Push(S,p->lchild); //向左走到尽头 Pop(S,p); //空指针退栈 if(!StackEmpty(S)){ //访问结点,向右一步 Pop(S,p); if(!Visit(p->data)) return ERROR; Push(S,p->rchild); }//if } //while Return OK;}//InOrderTraverse
阅卷人 一、单项选择题(每小题 2 分,共 20 分) 1. 对于只在表的首、尾进行插入操作的线性表,宜采用的存储结构为: ( C ) 。 (A) 顺序表 (B) 用头指针表示的单循环链表 (C) 用尾指针表示的单循环链表 (D) 单链表 2. 在 n 个结点的顺序表中,算法的时间复杂度是 O(1)的操作是: ( A ) 。 (A)访问第 i 个结点(1≤i≤n)和求第 i 个结点的直接前驱(2≤i≤n) (B)在第 i 个结点后插入一个新结点(1≤i≤n) (C)删除第 i 个结点(1≤i≤n) (D)将 n 个结点从小到大排序 3. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址( D ) 。 (A)必须是连续的 (B)部分地址必须是连续的 (C)一定是不连续的 (D)连续或不连续都可以 4. 线性表L在( B )情况下适用于使用链式结构实现。 (A)需经常修改L中的结点值 (B)需不断对L进行删除插入 (C)L中含有大量的结点 (D)L中结点结构复杂 5. 有一个含头结点的双向循环链表,头指针为 head, 则其为空的条件是: ( C ) 。 (A)head->prior==NULL (B)head->next==NULL (C)head->next==head (D)head->next->prior==NULL 6. 以下关于广义表的叙述中,正确的是: ( A ) 。 (A) 广义表是由 0 个或多个单元素或子表构成的有限序列 (B) 广义表至少有一个元素是子表 (C) 广义表不能递归定义 (D) 广义表不能为空表 7. 具有 n(n>0)个结点的完全二叉树的深度为( C ) 。 (A) log2(n) (B) log2(n) (C) log2(n) +1 (D) log2(n)+1