2010山西省数据库期末考试高级

合集下载

2010年山西省《数据结构》期末考试试题及答案最新考试试题库

2010年山西省《数据结构》期末考试试题及答案最新考试试题库
A.单链表 B.静态链表 C.线性链表 D.顺序存储结构
15、栈采用不同的存储方式时,下列关于出栈过程的叙述中,正确的是
A.顺序栈需要判定栈空,链栈也需要判定
B.顺序栈需要判定栈空,而链栈不需要判定
C.顺序栈不需要判定栈空,而链栈需要判定
D.顺序栈不需要判定栈空,链栈也不需要判定
3、G是一个非连通无向图,共28条边,则该图至少有( )个顶点
A 6 B 7 C 8 D 9
4、一个栈的入栈序列是1,2,3,4,5,则不可能的出栈序列是( )
A 5,4,3,2,1 B 4,5,3,2,1 C 4,3,5,1,2 D 1,2,3,4,5
C.p->next ==head D.p == head
20、有向图采用邻接矩阵存储,某一行中非零元素的个数等于
A.对应顶点v的度
B.对应顶点v的出度
C.对应顶点v的入度
D.依附于对应顶点v的边数
21、在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是 B 。
9、对于图1所示的二叉树,其后序序列为(C )。
A)ABDECFG B)DBEAFCG
C)DEBFGCA D)GFCEBDA
10、在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。
A.数据的处理方法 B.数据元素的类型
40、对于图1所示的二叉树,其后序序列为(C )。
A)ABDECFG B)DBEAFCG
C)DEBFGCA D)GFCEBDA
41、在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是 B 。
A.O(1) B.O(n) C.O(n2) D.O(nlog2n)

2010上全国信息技术水平考试数据库答案

2010上全国信息技术水平考试数据库答案

2010年(下)全国信息技术水平考试数据库应用系统设计技术水平证书(SQL Server)试卷答案三.设计题(共60分)评分说明:有些查询要求的实现方式有多种,因此如果考生所给答案和参考答案不一致,应根据考生答案实际情况判断其正确与否。

1.(6分)评分准则:创建每个表及主键1分,共3分;插入每个表的数据1分,共3分。

create table book(bno char(4) primary key,bname char(20),author char(10),publish char(20),pubdate datetime);create table reader(rno char(4) primary key,rname char(10));create table borrow(borrowno int primary key,bno char(4),rno char(4),borrowdate datetime);insert into book values('0001','数据库原理','李明','出版社A','2008-10-01');insert into book values('0002','软件工程','张永','出版社B','2008-08-09');insert into book values('0003','操作系统','赵明哲','出版社A','2009-03-06');insert into book values('0004','数据结构','张辉','出版社C','2009-05-28');insert into reader values('0001','李莎');insert into reader values('0002','陈世杰');insert into reader values('0003','吴忠');insert into borrow values(1,'0001','0001','2010-03-15');insert into borrow values(2,'0002','0001','2010-03-20');insert into borrow values(3,'0002','0002','2010-03-30');insert into borrow values(4,'0003','0002','2010-04-05');insert into borrow values(5,'0003','0001','2010-04-12');insert into borrow values(6,'0004','0001','2010-04-21');2.(3分)评分准则:创建了1个外键给2分;创建了两个外键给3分。

2010山西省计算机等级考试二级理论考试试题及答案

2010山西省计算机等级考试二级理论考试试题及答案

13、下述关于数据库系统的叙述中正确的是(A)
A. 数据库系统减少了数据冗余 B. 数据库系统避免了一切冗余
C. 数据库系统中数据的一致性是指数据类型的一致 D.ຫໍສະໝຸດ 数据库系统比文件系统能管理更多的数据
14、设有下列二叉树:图见书P46
对此二叉树中序遍历的结果为(B)
A. ABCDEF B. DBEAFC C. ABDECF D. DEBFCA
37、下列叙述中正确的是(C)
A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致
38、将E-R图转换到关系模式时,实体与联系都可以表示成(B)
A. 属性 B. 关系 C. 键 D. 域
15、在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是(A)
A. 数据库系统 B. 文件系统 C. 人工管理 D. 数据项管理
16、下面对对象概念描述错误的是(A)
A. 任何对象都必须有继承性 B. 对象是属性和方法的封装体
C. 对象间的通讯靠消息传递 D. 操作是对象的动态性属性
23、将E-R图转换到关系模式时,实体与联系都可以表示成(B)
A. 属性 B. 关系 C. 键 D. 域
24、下面描述中,符合结构化程序设计风格的是(A)
A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句
45、软件调试的目的是(B) 注:与软件测试要对比着复习

2010年9月全国计算机等级考试三级数据库真题及答案(免费)

2010年9月全国计算机等级考试三级数据库真题及答案(免费)

一、选择题(每小题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。

请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

(1)冯·诺依曼奠定了现代计算机工作原理的基础。

下列叙述中,哪个(些)是正确的?I.程序必须装入内存才能执行II.计算机按照存储的程序逐条取出指令,分析后执行指令所规定的操作III.计算机系统由运算器、存储器、控制器、输入设备、输出设备等五大部件组成A)仅I B)仅I和II C)仅II和III D)都正确(2)关于指令系统的寻址方式,如果在指令中给出操作数所在的地址,该方式称为A)立即寻址B)直接寻址C)寄存器寻址D)寄存器间接寻址(3)用于实现Internet中文件传输功能所采用的应用层协议是A)FTP B)DNS C)SMTP D)HTTP(4)WWW能够提供面向Internet服务的、一致的用户界面的信息浏览功能,其使用的基础协议是A)FTP B)DNS C)SMTP D)HTTP(5)一般操作系统的安全措施可从隔离、分层和内控三个方面考虑,隔离是操作系统安全保障的措施之一。

限制程序的存取,使其不能存取允许范围以外的实体,这是A)物理隔离B)时间隔离C)逻辑隔离D)密码隔离(6)下列哪一个不属于恶意软件?A)逻辑炸弹B)服务攻击C)后门陷阱D)僵尸网络(7)下列哪些是数据结构研究的内容?I.数据的采集和集成II.数据的逻辑结构III.数据的存储结构IV.数据的传输V.数据的运算A)仅I、II和III B)仅II、III和VC)仅I、II和IV D)仅I、III和V(8)下列与数据元素有关的叙述中,哪些是正确的?I.数据元素是数据的基本单位,即数据集合中的个体II.数据元素是有独立含义的数据最小单位III.一个数据元素可由一个或多个数据项组成IV.数据元素又称做字段V.数据元素又称做结点A)仅I和II B)仅II、III和IV C)仅I和III D)仅I、III和V(9)下列与算法有关的叙述中,哪一条是不正确的?A)算法是精确定义的一系列规则B)算法指出怎样从给定的输入信息经过有限步骤产生所求的输出信息C)算法的设计采用由粗到细,由抽象到具体的逐步求精的方法D)对于算法的分析,指的是分析算法运行所要占用的存储空间,即算法的空间代价(10)下列关于栈和队列的叙述中,哪些是正确的?I.栈和队列都是线性表II.栈和队列都是顺序表III.栈和队列都不能为空IV.栈和队列都能应用于递归过程实现V.栈的特点是后进先出,而队列的特点是先进先出A)仅I和V B)仅I、II、V C)仅III和IV D)仅II、III和IV(11)按后根次序周游树(林)等同于按什么次序周游该树(林)对应的二叉树?A)前序B)后序C)对称序D)层次次序(12)有关键码值为10, 20. 30的三个结点,按所有可能的插入顺序去构造二叉排序树。

中职数据库应用基础Access 2010期末测试卷及答案

中职数据库应用基础Access 2010期末测试卷及答案

数据库应用基础(ACCeSS 2010)学院20 -20学年第学期考试试卷一、单项选择题(本大题共25小题,每小题1分,共25分)在每小题列出的四个备用选项中只有一个符合题目要求的,请将其代码填写在题后的括号内。

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

1、以下方法不能退出Access 的是[ ] A.打开“文件”菜单,选择“退出”命令B.打开“文件”菜单,按X 键C.按ESC 键D.按 Alt+F4 键2、不是Access 数据库对象的是[ ] A.表B.查询C.视图D .模块3、图形文件的字段类型是[] A.备注型B. OLE 对象C.日期类型D .文本类型4、对于自动编号型的描述错误的是A.用来存储递增数据和随即数据的。

B.数据无需输入,每增加一个新记录,Access系统将自动编号型字段的数据自动加KC.用户可以自己给自动编号字段类型输入数据。

D.字段长度为4个字节。

5、创建表的方法[]A.数据表视图B.设计视图C.表向导D.以上三种都可以6、关于主键,下列说法错误的是[]A. Access2010并不要求在每一个表中都必须包含一个主键。

B.在一个表中只能指定一个字段为主键。

C.在输入数据或对数据进行修改时,不能向主键的字段输入相同的值。

D.利用主键可以加快数据的查找速度。

7、如果一个字段在多数情况下取一个固定的值,可以将这个值设置成字段的[]A.关键字B.默认值C.有效性文本D.输入掩码8、在表的设计视图的“字段属性”框中,默认情况下,“标题”属性是[]A.字段名B.空C.字段类型D. NULL9、在表的设计视图中,要插入一个新字段,应将光标移动到位于插入字段之后的字段上,在“插入”菜单中选择什么命令[]A.新记录B.新字段C.行D.列10、在表的数据视图把光标定位在最后一行可以单击“插入”菜单,选取什么命令[]A.新记录B.新字段C.行D.列II、在对某字符型字段进行升序排序时,假设该字段存在这样四个值: 〃100〃、〃22〃、〃18〃和〃3〃,则最后排序结果是[ ]A. 〃100〃、〃22〃、〃18〃、〃3〃B. 〃3〃、“18〃、〃22〃、〃100〃C. 〃I00〃、〃18〃、〃22〃、〃3〃D. 〃18〃、〃100〃、"22” 、12、在对某字符型字段进行升序排序时,假设该字段存在这样四个值: 〃中国〃、〃美国〃、〃俄罗斯〃和〃日本〃,则最后排序结果是[]A.〃中国〃、〃美国〃、〃俄罗斯〃、〃日本〃B.〃俄罗斯〃、〃日本〃、〃美国〃、〃中国〃C.〃中国〃、〃日本〃、〃俄罗斯〃、〃美国〃D.〃俄罗斯〃、〃美国〃、〃日本〃、〃中国〃13、在查找和替换操作中,可以使用通配符,下列不是通配符的是[]A. *B. ?C. !D. @14、ACCeSS2010支持的查询类型有[]A.选择查询、交叉表查询、参数查询、SQL查询和操作查询B.选择查询、基本查询、参数查询、SQL查询和操作查询C.多表查询、单表查询、参数查询、SQL查询和操作查询D.选择查询、汇总查询、参数查询、SQL查询和操作查询15、根据指定的查询条件,从一个或多个表中获取数据并显示结果的查询称为[]A.交叉表查询B.参数查询C.选择查询D.操作查询16、下列关于条件的说法中,错误的是[A.同行之间为逻辑“与”关系,不同行之间的逻辑“或”关系B.日期/时间类型数据在两端加上#C.数字类型数据需在两端加上双引号D.文本类型数据需在两端加上双引号17、在学生成绩表中,查询成绩为70-80分之间(不包括80)的学生信息。

Access2010《数据库基础与应用》期末综合复习题

Access2010《数据库基础与应用》期末综合复习题

(共有 33 题; 满分: 36 分; 总时; 0 分钟)第 1 题:(单选题,1 分)在 Access2010 中的 VBA 过程里,要运行宏可以使用DoCmd 对象的 ______方法。

A .Open B.RunMacro C . Close D.Query[A]选 A[B]选 B[C]选 C[D]选 D答案: B第 2 题:(单选题,1 分)在宏中, OpenReport 操作可用来打开指定的_______。

A .查询B.状态栏 C .窗体D.报表[A]选 A[B]选 B[C]选 C[D]选 D第 3 题:(单选题,1 分)关于宏的执行,以下说法不正确的是_______。

A.在“导航窗格”,选择“宏”对象列表中的某个宏名并双击,可以直接运行该宏中的第一个子宏的所有宏操作B.在“导航窗格”,选择“宏”对象列表中的某个宏名并双击,可以直接运行该宏中的第二个子宏的所有宏操作C.可以在一个宏中运行另一个宏D.在一个宏中可以含有IF 逻辑块[A]选 A[B]选 B[C]选 C[D]选 D答案: B第 4 题:(单选题,1 分)在宏中,用于显示所有记录的宏命令是_______。

A.MsgboxAllRecordsB. ShowAllRecordsC .SetPropertyD.SaveRecords[B]选 B[C]选 C[D]选 D答案: B第 5 题:(单选题,1 分)在 VBA 中,表达式(5^2 Mod 8) >= 4 的值是 _______。

A .True B.False C . And D. Or[A]选 A[B]选 B[C]选 C[D]选 D答案: B第 6 题:(单选题,1 分)表达式IIf(23 \ 5.5 <= 3 Or 5 >= 6, 68, 176) 的结果是 ______。

A.5 B.6 C .68 D.176注意:执行整除之前,要先把除数四舍五入。

请另外试试表达式 IIf(23 \ 5.4 <= 3 Or 5 >= 6, 68, 176) 的结果。

Access2010《数据库基础与应用》期末综合练习题(2) 2

Access2010《数据库基础与应用》期末综合练习题(2) 2

Access2010《数据库基础与应用》期末综合练习题(注意!宏的概念、作用可以在课本P193找到,也可以打开宏的操作,在目录查看其作用)第1 题: (单选题, 1 分)在 Access2010 中的 VBA 过程里,要运行宏可以使用 DoCmd 对象的______方法。

A.Open B.RunMacro C.Close D.Query[A]选A[B]选B[C]选C[D]选D答案: B第2 题: (单选题, 1 分)在宏中,OpenReport 操作可用来打开指定的_______。

A.查询 B.状态栏 C.窗体 D.报表[A]选A[B]选B[C]选C[D]选D答案: D第3 题: (单选题, 1 分)关于宏的执行,以下说法不正确的是_______。

A.在“导航窗格”,选择“宏”对象列表中的某个宏名并双击,可以直接运行该宏中的第一个子宏的所有宏操作B.在“导航窗格”,选择“宏”对象列表中的某个宏名并双击,可以直接运行该宏中的第二个子宏的所有宏操作C.可以在一个宏中运行另一个宏D.在一个宏中可以含有IF逻辑块[A]选A[B]选B[C]选C[D]选D答案: B第4 题: (单选题, 1 分)在宏中,用于显示所有记录的宏命令是_______。

A.MsgboxAllRecordsB.ShowAllRecordsC.SetPropertyD.SaveRecords[A]选A[B]选B[C]选C[D]选D答案: B第5 题: (单选题, 1 分)在 VBA 中,表达式 (5^2 Mod 8) >= 4 的值是_______。

【用立即窗口算】 A.True B.False C.And D. Or[A]选A[B]选B[C]选C[D]选D答案: B第6 题: (单选题, 1 分)Access2010《数据库基础与应用》期末综合练习题3 / 15表达式 IIf(23 \ 5.5 <= 3 Or 5 >= 6, 68, 176) 的结果是______。

《access2010数据库基础与应用》期末考试题(a卷)(含答案)

《access2010数据库基础与应用》期末考试题(a卷)(含答案)

《 Access2010数据库基础与应用》期末考试题( A 卷)(含答案)1. DBMS提供了__________语言,用于实现数据的插入、更新、删除、检索等任务。

A . DCLB . DDL C. DML D. APL2.在 E-R 图中,用来表示“实体”的图形是__________ 。

A .椭圆形B .矩形C.三角形D.菱形3.在Access 数据库设计中,将E-R 图转换为关系模式是___________ 中的任务。

A .数据库物理设计B.数据库优化C.数据库概念设计D.数据库逻辑设计4.在Access 数据库中,用于存储数据的对象是__________。

A .表B.窗体C.报表D.查询5.下列叙述中,___________是错误的。

A.一个关系中的任意两个分量不可以相同B.一个关系中的任意两个属性名不可以相同C.一个关系中的任意两个元组不可以完全相同D.关系中的元组也称为记录6.对于一个日期/时间类型的字段,如果想使该字段数据以类似“xxxx 年 x 月 x 日”方式显示,可以通过对其字段属性的“格式”设定为____________ 来实现。

A .短日期B.中日期C.长日期D.常规日期7.下列实体的联系中,属于一对多的联系是___________。

A .学生与宿舍床位B .学校与校长C.学生与课程 D .学校与教师8. SQL 语句中的CREATE TABLE关键字的功能是在数据库中__________。

A .创建表B.创建查询C.创建窗体D.创建数据访问页9.“学院”表中有一个“学院名称”字段,要查找学院名称为“商学院”或“法学院”的记录,使用的条件是 __________ 。

A . In(" 商学院或法学院")B .In(" 商学院 "," 法学院 ")C.In(" 商学院 " or " 法学院 ")D. In(" 商学院 " and " 法学院 ")10.用表“教师”创建新表“教师2”,所使用的查询方式是__________ 。

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

1、由二叉树的前序遍历和中序遍历序列能确定唯一的一棵二叉树,下面程序的作用是实现由已知某二叉树的前序遍历和中序遍历序列,生成一棵用二叉链表表示的二叉树并打印出后序遍历序列,请写出程序所缺的语句。

#define MAX 100typedef struct Node{char info; struct Node *llink, *rlink; }TNODE;char pred[MAX],inod[MAX];main(int argc,int **argv){ TNODE *root;if(argc<3) exit 0;strcpy(pred,argv[1]); strcpy(inod,argv[2]);root=restore(pred,inod,strlen(pred));postorder(root);}TNODE *restore(char *ppos,char *ipos,int n){ TNODE *ptr; char *rpos; int k;if(n<=0) return NULL;ptr->info=(1)_______;for((2)_______ ; rpos<ipos+n;rpos++) if(*rpos==*ppos) break;k=(3)_______;ptr->llink=restore(ppos+1, (4)_______,k );ptr->rlink=restore ((5)_______+k,rpos+1,n-1-k);return ptr;}postorder(TNODE*ptr){ if(ptr=NULL) return;postorder(ptr->llink); postorder(ptr->rlink); printf(“%c”,ptr->info); }2、设从键盘输入一整数的序列:a1, a2, a3,…,an,试编写算法实现:用栈结构存储输入的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。

算法应对异常情况(入栈满等)给出相应的信息。

设有一个背包可以放入的物品重量为S,现有n件物品,重量分别为W1,W2,...,Wn。

问能否从这n件物品中选择若干件放入背包,使得放入的重量之和正好是S。

设布尔函数Knap(S,n)表示背包问题的解,Wi(i=1,2,...,n)均为正整数,并已顺序存储地在数组W中。

请在下列算法的下划线处填空,使其正确求解背包问题。

Knap(S,n)若S=0则Knap←true否则若(S<0)或(S>0且n<1)则Knap←false否则若Knap(1) , _=true则print(W[n]);Knap ←true否则 Knap←Knap(2) _ , _设有一个顺序栈S,元素s1, s2, s3, s4, s5, s6依次进栈,如果6个元素的出栈顺序为s2, s3, s4, s6, s5, s1,则顺序栈的容量至少应为多少?画出具体进栈、出栈过程。

假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,则可共享相同的后缀存储空间。

例如:设str1和str2是分别指向两个单词的头结点,请设计一个尽可能的高效算法,找出两个单词共同后缀的起始位置,分析算法时间复杂度。

将n(n>1)个整数存放到一维数组R中。

设计一个尽可能高效(时间、空间)的算法,将R中保存的序列循环左移p(0<p<n)个位置,即将R中的数据(x0, x1, x2,…, xn-1),变换为(xp, xp+1, … , xn-1 ,x0 , x1,…, xp-1)。

3、假设以I和O分别表示入栈和出栈操作。

栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。

(15分)(1)A和D是合法序列,B和C 是非法序列。

(2)设被判定的操作序列已存入一维数组A中。

int Judge(char A[])//判断字符数组A中的输入输出序列是否是合法序列。

如是,返回true,否则返回false。

{i=0; //i为下标。

j=k=0; //j和k分别为I和字母O的的个数。

while(A[i]!=‘\0’) //当未到字符数组尾就作。

{switch(A[i]){case‘I’: j++; break; //入栈次数增1。

case‘O’: k++; if(k>j){printf(“序列非法\n”);exit(0);}}i++; //不论A[i]是‘I’或‘O’,指针i均后移。

}if(j!=k) {printf(“序列非法\n”);return(false);}else {printf(“序列合法\n”);return(true);}}//算法结束。

4、二叉树的层次遍历序列的第一个结点是二叉树的根。

实际上,层次遍历序列中的每个结点都是“局部根”。

确定根后,到二叉树的中序序列中,查到该结点,该结点将二叉树分为“左根右”三部分。

若左、右子树均有,则层次序列根结点的后面应是左右子树的根;若中序序列中只有左子树或只有右子树,则在层次序列的根结点后也只有左子树的根或右子树的根。

这样,定义一个全局变量指针R,指向层次序列待处理元素。

算法中先处理根结点,将根结点和左右子女的信息入队列。

然后,在队列不空的条件下,循环处理二叉树的结点。

队列中元素的数据结构定义如下:typedef struct{ int lvl; //层次序列指针,总是指向当前“根结点”在层次序列中的位置int l,h; //中序序列的下上界int f; //层次序列中当前“根结点”的双亲结点的指针int lr; // 1—双亲的左子树 2—双亲的右子树}qnode;BiTree Creat(datatype in[],level[],int n)//由二叉树的层次序列level[n]和中序序列in[n]生成二叉树。

n是二叉树的结点数{if (n<1) {printf(“参数错误\n”); exit(0);}qnode s,Q[]; //Q是元素为qnode类型的队列,容量足够大init(Q); int R=0; //R是层次序列指针,指向当前待处理的结点BiTree p=(BiTree)malloc(sizeof(BiNode)); //生成根结点p->data=level[0]; p->lchild=null; p->rchild=null; //填写该结点数据for (i=0; i<n; i++) //在中序序列中查找根结点,然后,左右子女信息入队列if (in[i]==level[0]) break;if (i==0) //根结点无左子树,遍历序列的1—n-1是右子树{p->lchild=null;s.lvl=++R; s.l=i+1; s.h=n-1; s.f=p; s.lr=2; enqueue(Q,s);}else if (i==n-1) //根结点无右子树,遍历序列的1—n-1是左子树{p->rchild=null;s.lvl=++R; s.l=1; s.h=i-1; s.f=p; s.lr=1; enqueue(Q,s);}else //根结点有左子树和右子树{s.lvl=++R; s.l=0; s.h=i-1; s.f=p; s.lr=1;enqueue(Q,s);//左子树有关信息入队列s.lvl=++R; s.l=i+1;s.h=n-1;s.f=p; s.lr=2;enqueue(Q,s);//右子树有关信息入队列}while (!empty(Q)) //当队列不空,进行循环,构造二叉树的左右子树{ s=delqueue(Q); father=s.f;for (i=s.l; i<=s.h; i++)if (in[i]==level[s.lvl]) break;p=(bitreptr)malloc(sizeof(binode)); //申请结点空间p->data=level[s.lvl]; p->lchild=null; p->rchild=null; //填写该结点数据if (s.lr==1) father->lchild=p;else father->rchild=p; //让双亲的子女指针指向该结点if (i==s.l){p->lchild=null; //处理无左子女s.lvl=++R; s.l=i+1; s.f=p; s.lr=2; enqueue(Q,s);}else if (i==s.h){p->rchild=null; //处理无右子女s.lvl=++R; s.h=i-1; s.f=p; s.lr=1; enqueue(Q,s);}else{s.lvl=++R; s.h=i-1; s.f=p; s.lr=1; enqueue(Q,s);//左子树有关信息入队列s.lvl=++R; s.l=i+1; s.f=p; s.lr=2; enqueue(Q,s); //右子树有关信息入队列}}//结束while (!empty(Q))return(p);}//算法结束5、给定n个村庄之间的交通图,若村庄i和j之间有道路,则将顶点i和j用边连接,边上的Wij表示这条道路的长度,现在要从这n个村庄中选择一个村庄建一所医院,问这所医院应建在哪个村庄,才能使离医院最远的村庄到医院的路程最短?试设计一个解答上述问题的算法,并应用该算法解答如图所示的实例。

(20分)6、对二叉树的某层上的结点进行运算,采用队列结构按层次遍历最适宜。

int LeafKlevel(BiTree bt, int k) //求二叉树bt 的第k(k>1) 层上叶子结点个数{if(bt==null || k<1) return(0);BiTree p=bt,Q[]; //Q是队列,元素是二叉树结点指针,容量足够大int front=0,rear=1,leaf=0; //front 和rear是队头和队尾指针, leaf是叶子结点数int last=1,level=1; Q[1]=p; //last是二叉树同层最右结点的指针,level 是二叉树的层数while(front<=rear){p=Q[++front];if(level==k && !p->lchild && !p->rchild) leaf++; //叶子结点if(p->lchild) Q[++rear]=p->lchild; //左子女入队if(p->rchild) Q[++rear]=p->rchild; //右子女入队if(front==last) {level++; //二叉树同层最右结点已处理,层数增1last=rear; } //last移到指向下层最右一元素if(level>k) return (leaf); //层数大于k 后退出运行}//while }//结束LeafKLevel7、将顶点放在两个集合V1和V2。

相关文档
最新文档