2013年澳门特别行政区数据结构理论与实践高级

合集下载

2013年澳门特别行政区数据概述入门

2013年澳门特别行政区数据概述入门
free(p); //释放p数组.
}// Translation
[算法分析] 算法中使用选择法排序,比较次数较多,但数据交换(移动)较少.若用其它排序方法,虽可减少比较次数,但数据移动会增多.算法时间复杂度为O(n2).
2、 二叉树的层次遍历序列的第一个结点是二叉树的根。实际上,层次遍历序列中的每个结点都是“局部根”。确定根后,到二叉树的中序序列中,查到该结点,该结点将二叉树分为“左根右”三部分。若左、右子树均有,则层次序列根结点的后面应是左右子树的根;若中序序列中只有左子树或只有右子树,则在层次序列的根结点后也只有左子树的根或右子树的根。这样,定义一个全局变量指针R,指向层次序列待处理元素。算法中先处理根结点,将根结点和左右子女的信息入队列。然后,在队列不空的条件下,循环处理二叉树的结点。队列中元素的数据结构定义如下:
for(j=0;j<n;j++) //交换两行中对应元素.
{sum=*(pk+j); *(pk+j)=*(pi+j); *(pi+j)=sum;}
sum=p[i]; p[i]=p[k]; p[k]=sum; //交换一维数组中元素之和.
}//if
}//for i
最后,当1<i<m时,Si把中序序列分成{S1,S2,…,Si-1}和{Si+1,Si+2,…,Sm}。由于后序遍历是“左子树—右子树—根结点”,所以{P1,P2,…,Pi-1}和{Pi,Pi+1,…Pm-1}是二叉树的左子树和右子树的后序遍历序列。因而由{S1,S2,…,Si-1}和{P1,P2,…,Pi-1}
return(p);
}//算法结束
3、证明由二叉树的中序序列和后序序列,也可以唯一确定一棵二叉树。

01343数据结构原理与分析

01343数据结构原理与分析

课程名称:数据结构原理与分析课程代码:01343一、第一部分课程性质与目标二、课程的性质与特点:《数据结构》是信息技术专业、计算机应用技术专业的一门重要的专业基础课,用计算机解决任何实际问题都离不开数据表示和数据处理,而数据的表示和处理的核心问题之一数据结构及其实现正是数据结构课程的基本内容,在计算机软件的各个领域中均会使用到该课程的有关知识。

从这个意义上说数据结构课程在知识学习和技能培养两个方面都处于关键性地位;本课程的目的和任务是学生较全面地掌握各种常用的数据结构,为学习后续软件课程提供必要的基础,提高运用数据结构解决实际问题的能力。

本课程不仅为数据库及其应用操作系统概论面向对象程序设计软件工程等后继软件课程提供了必要的知识基础、也为计算机及应用的专业人员提供了必要的技能训练。

课程特点《数据结构》是实践性很强的课程,不仅要注重学习基本理论知识,更要注重上机实践,通过上机实践验证算法的正确性,掌握和巩固所学理论知识。

三、课程目标与基本要求:通过本课程的学习,使学生能够:1、掌握常用数据结构的基本概念;2、掌握四种常用逻辑结构的特点和数据组织方法;3、掌握线性表的存储结构及其算法的实现;4、掌握各种查找及排序的方法和算法实现;5、掌握树、图的存储结构;了解这两章的相关算法。

6、学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法。

7、通过对本课程算法设计和上机实践的训练,还要注重培养学生的数据抽象能力和基本程序设计的能力。

四、与本专业其他课程的关系本课程的先修课程为离散数学和高级语言程序设计(C语言和C++语言),后续课程为操作系统、数据库原理等。

数据结构中存储结构及基本运算的实现需要程序设计的基本知识和编程的经验及能力,本课程的大部分实例均是用C语言(或C++)实现的,故要求较熟练地掌握C语言(或C++)。

【课程修读对象】第二部分考核内容与考核目标第一章绪论一、学习目的和要求通过本章学习,学生需要掌握常用的基本概念,了解本书涉及的逻辑结构和存储结构,对本教材的体系有一个大致的了解。

2013-2014学年春学期拟停开课程情况一览表

2013-2014学年春学期拟停开课程情况一览表

杜诗研究 01 汉语语法修辞学 01 中国古代小说研究 01 民间文学 01 汉语语法修辞学 02 西方马克思主义文论研究 01 中国古代诗文鉴赏 02 当代文学思潮 01 当代文学思潮 03 当代文学思潮 02 外国文学名著选读 03 中国古代小说研究 02 外国文学名著选读 01 外国文学名著选读 02 小说美学 01 数字出版技术 01 广播电视法规与职业道德 01 中外出版人物专题 01 中国广播电视史 01 出版社经营与管理 01 出版网络建设与管理 02 应用随机过程 01 员工福利与企业年金 01 保险法学 01 中级微宏观经济学 03 跨国投资与经营 02 经济预测与决策 02 博弈论与信息经济学 02
51 51 51 51 51 51 102 51 34 34 34 34 51 34 34 34 34 34 34 17 34 34 17 34 34 34 51 34 34 34
3 3 3 3 3 3 6 3 1 2 2 2 3 2 2 2 2 2 2 1 2 1 1 1 2 2 3 2 2 2
任选 任选 任选 任选 任选 任选 必修 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选 任选
文学院 文学院 文学院 文学院 文学院 文学院 文学院 文学院 文学院 文学院 文学院 文学院 文学院 文学院 文学院 新闻学院 新闻学院 新闻学院 新闻学院 新闻学院 新闻学院 经济学院 经济学院 经济学院 经济学院 经济学院 经济学院 经济学院
011011 010021 010020 010028 010021 011010 010019 010014 010014 010014 010015 010020 010015 010015 010036 021079 020106 021078 020098 020139 021075 031062 030096 030095 031002 031020 030070 031003

系统仿真学报最新进展

系统仿真学报最新进展

《系统仿真学报》最新进展2008年《系统仿真学报》编辑部共收到投稿6000多篇,比07年增长近一千篇,全年共出版25期,刊登论文共计1760篇(07年1665篇),总页码7412页(07年5867页),比去年增加26%。

系统仿真学报的国内外影响力继续攀升。

2008版的《中文核心期刊要目总揽》再次收录了《系统仿真学报》。

2008年《系统仿真学报》被美国工程索引(Ei )数据库的收录率为100%。

2008版《中国科技期刊引证报告》(核心版)选取各个学科重要科技期刊1765种。

统计的结果表明,2007年《系统仿真学报》的影响因子为0.732(扩展版为0.946),比2006年的0.503上升了46%,影响因子总排名从去年的508名上升到今年的248名,在同领域期刊中排名第2位(见表1.1-1.5);总被引频次为3320(扩展版为4276)居同领域期刊第1位。

2008版《中国学术期刊引证报告》统计结果显示:在6500多种期刊中,《系统仿真学报》的影响因子为0.914,总被引频次为4219,列同领域期刊第1位。

见表2--10。

2009年《系统仿真学报》被全球规模最大的文摘和引文数据库Scopus 数据库收录表1.1 2007年信息科学与系统科学类总被引频次和影响因子(2008版中国科技期刊引证报告核心版)代码 期刊名称总被引频次 影响因子 数值学科排名离均差率 数值 学科排名离均差率 R060 控制理论与应用 904 4 -0.18 0.406 8 -0.26 S001 控制与决策 1599 3 0.45 0.726 3 0.33 S003 系统仿真学报 3320 1 2.00 0.763 2 0.40 B028 系统工程 841 5 -0.24 0.620 5 0.14 B025 系统工程理论与实践 2159 2 0.95 0.896 1 0.64 B018 系统工程学报 595 7 -0.46 0.624 4 0.14 B027 系统管理学报 290 9 -0.74 0.550 6 0.01 B021 系统科学与数学 327 8 -0.70 0.213 9 -0.61 S002 信息与控制 817 6 -0.26 0.514 7 -0.06 A015应用与科学学报20210-0.820.13710-0.75表1.2 2007年文献来源指标(2008版中国科技期刊引证报告扩展版)来源文献量 文献选出率 平均引文 平均作者 地区分布数 机构分布数 海外论文比 基金论文比 引用半衰期 14440.9959.743.244262950.0070.6775.872表1.3 2007年文献被引指标(2008版中国科技期刊引证报告扩展版)总被引频次 影响因子 即年指标 他引率 引用期刊数 扩散因子 学科扩散指标 学科影响指标 被引半衰期 42760.9460.120.67883619.55110.450.6123.366表1.4 2007年期刊高被引指数(2008版中国科技期刊引证报告扩展版)五年被引频次五年影响因子五年载文总数被引率 学科高被引文章分布数34620.9835320.5252 被引50%文章累积指数被引50%作者累积指数被引50%机构累积指数单篇文章最高被引次数46335415.10422表1.5 2007年期刊引证报告中被引频次最高的前5篇文章如下(2008版中国科技期刊引证报告扩展版)[1] 一种自适应蚁群算法及其仿真研究 [2] 现代建模与仿真技术发展中的几个焦点 [3] 汉语自动分词的研究现状与困难[4] 虚拟现实技术的演变发展与展望[5] 用于回归估计的支持向量机方法【第一作者】王颖 【第一作者】李伯虎 【第一作者】张春霞 【第一作者】邹湘军 【第一作者】杜树新 【年期】2002,(01) 【年期】2004,(09) 【年期】2005,(01) 【年期】2004,(09) 【年期】2003,(11) 【被引频次】22【被引频次】14【被引频次】11【被引频次】11【被引频次】11表2 系统仿真学报引证指标统计表中国学术期刊综合引证报告(2008版)统计年载文量基金论文比总被引频次他引总引比影响因子5年影响因子即年指标被引半衰期Web即年下载率2007 1444 0.68 4219 0.67 0.914 0.968 0.117 3.4 50.8 2006 915 0.63 2536 0.79 0.635 0.782 0.036 3.4 61.2 2005 826 0.58 1824 0.83 0.584 0.758 0.031 3.3 33.1 2004 781 0.56 1123 0.79 0.538 0.660 0.037 3.0 52.4 2003 512 745 0.8121 0.5161 0.0313 2.92002 471 480 0.7083 0.5791 0.0488 2.72001 244 263 0.7376 0.5267 0.0574 2.52表3 系统仿真学报访问用户来源统计表(总报表:2005-2008年) 地域名称下载频次浏览数访问量亚洲782700 881463 1664163欧洲10687 18523 29210北美洲403 2138 2541大洋洲125 150 275非洲 1 7 8表5 系统仿真学报专业引用情况统计表(总报表:1980-2008年)专业名称文献数引用频次信息科技5902 14594工程科技Ⅱ辑1464 2378基础科学227 435工程科技Ⅰ辑129 254经济与管理科学35 123社会科学Ⅰ辑38 88医药卫生科技21 78农业科技9 7社会科学Ⅱ辑 2 1哲学与人文科学7 0 表4 系统仿真学报学科引用情况统计表(总报表:1980-2008年) 学科导航文献数引用频次工业技术6349 15143交通运输278 553航空、航天309 353军事164 299经济53 159数理科学和化学104 154自然科学总论23 137天文学、地球科学45 53环境科学、安全科学18 52医药、卫生21 49社会科学总论 3 6农业科学8 3文化、科学、教育、体育24 1政治、法律 1 1综合性图书 6 0生物科学 4 0历史、地理 3 0语言、文字 1 0表6 系统仿真学报专业网络传播情况统计表(总报表:2005-2008年)专业名称下载频次浏览数访问量信息科技603193 681726 1284919工程科技Ⅱ辑148265 171124 319389基础科学21800 25270 47070工程科技Ⅰ辑10624 13273 23897经济与管理科学4187 4793 8980社会科学Ⅰ辑3459 3447 6906医药卫生科技1717 1877 3594农业科技543 629 1172社会科学Ⅱ辑75 88 163哲学与人文科学53 55 108表7 系统仿真学报单篇文献引用情况统计表(年报表:2000-2008年)(部分)文献标题作者出版年出版期引用频次虚拟实验室网络体系结构研究李仁发,周祖德,李方敏,陈幼平,彭欢宇2002 03 74现代建模与仿真技术发展中的几个焦点李伯虎,柴旭东,朱文海,邸彦强等2004 09 69基于HLA的分布交互仿真应用系统开发研究郝江波,卿杜政,欧阳伶俐,宋星2000 05 64基于Vega的视景驱动软件的分析与设计李军,王绍棣,常建刚,孙知信等2003 03 61复杂物流系统仿真及其研究现状朱卫锋,费奇2003 03 58 HLA/RTI的研究与实现姚益平,时向泉,万江华2000 04 50基于粒子系统的实时雨雪模拟王润杰,田景全,倪政国2003 04 48基于海浪谱的波浪模拟杨怀平,孙家广2002 09 47 HLA运行支撑框架(SSS-RTI)的研究与开发卿杜政,李伯虎2000 05 46随机海浪模型的建立及仿真分析邱宏安2000 03 46 MATLAB在模糊控制系统设计和仿真的应用李祖欣2003 01 44遗传算法在神经网络控制中的应用与实现杨国军,崔平远,李琳琳2001 05 43面向虚拟装配的装配顺序规划研究卢小平2003 01 42系统科学及系统复杂性研究戴汝为2002 11 41 SWARM—一个支持人工生命建模的面向对象模拟平台丁浩,杨小平2002 05 40文献标题作者出版年出版期下载频次浏览数访问量《系统仿真学报》2004年第16卷总目次2004 12 1322 152 1474 基于Matlab无刷直流电机系统仿真建模的新方法纪志成,沈艳霞,姜建国2003 12 1082 1470 2552现代建模与仿真技术发展中的几个焦点李伯虎,柴旭东,朱文海,邸彦强,王鹏,施国强,谭娟,殷润民,侯宝存2004 09 1072 1011 2083基于Matlab交流异步电机矢量控制系统的仿真建模纪志成,薛花,沈艳霞2004 03 995 1249 2244 快变衰落信道的Matlab仿真及其应用代光发,陈少平2005 01 924 1106 2030基于MATLAB仿真的神经网络控制器的设计与实现王桂娟,徐红东,王佐勋,许强,张元国2005 03 829 721 1550移动机器人路径规划技术的现状与展望张捍东,郑睿,岑豫皖2005 02 787 800 1587 建模与仿真技术发展趋势分析杨明,张冰,王子才2004 09 760 766 1526基于SIMULINK的现代通信系统仿真分析席在芳;邬书跃;唐志军;曾照福;2006 10 750 1028 1778物流系统仿真研究综述李永先;胡祥培;熊英; 2007 07 730 1033 1763 汉语自动分词的研究现状与困难张春霞,郝天永2005 01 701 804 1505 复杂物流系统仿真及其研究现状朱卫锋,费奇2003 03 701 742 1443虚拟现实技术的演变发展与展望邹湘军,孙健,何汉武,郑德涛,陈新2004 09 697 698 1395虚拟样机技术熊光楞,李伯虎,柴旭东2001 01 696 821 151 表9 科技与生产\技术\自动化(中国学术期刊综合引证报告--2008版)序号刊名总被引频次他引总引比影响因子h指数Web即年下载率1 系统仿真学报4219 0.67 0.914 26 50.82 控制与决策2195 0.94 0.907 24 82.63 自动化学报1661 0.97 0.572 15 75.94 控制理论与应用1410 0.94 0.555 15 53.55 传感器与微系统1021 0.90 0.429 13 33.26 信息与控制1019 0.97 0.669 20 53.97 机器人934 0.92 0.731 19 66.68 传感技术学报861 0.65 0.431 13 45.89 控制工程823 0.78 0.887 16 28.710 液压与气动557 0.83 0.217 11 20.811 制造业自动化551 0.95 0.302 13 26.212 模式识别与人工智能485 0.92 0.384 ——13 化工自动化及仪表468 0.78 0.444 13 22.514 自动化技术与应用429 0.92 0.259 13 28.615 自动化与仪器仪表315 0.97 0.316 10 34.316 冶金自动化300 0.92 0.312 10 20.517 工矿自动化280 0.88 0.278 9 29.718 机械制造与自动化257 0.94 0.197 12 27.619 传感器世界240 0.93 0.305 9 33.320 液压气动与密封233 0.78 0.282 9 18.121 电气传动自动化223 0.98 0.187 10 28.222 自动化与仪表214 1.00 0.226 8 37.923 指挥控制与仿真199 0.81 0.256 6 27.724 自动化博览174 0.99 0.168 12 19.025 电气自动化154 0.91 0.099 ——26 精密制造与自动化146 0.92 0.333 9 24.227 机器人技术与应用142 0.99 0.099 11 30.428 Journal of Control Theory and Applications 55 0.80 0.220 3 16.429 自动化与信息工程51 0.94 0.154 6 24.030 传动技术46 0.91 0.164 5 27.031 流体传动与控制43 0.88 0.104 3 15.732 智能系统学报33 0.91 0.112 4 56.833 系统仿真技术12 0.92 0.119 —39.134 International Journal of Automation and Computing 8 1.00 0.077 — 5.6表10 科技与生产\技术\自动化(中国学术期刊综合引证报告--2008版)序号刊名影响因子即年指标5年影响因子总被引频次1 系统仿真学报0.914 0.117 0.968 42192 控制与决策0.907 0.085 1.028 21953 控制工程0.887 0.080 0.824 8234 机器人0.731 0.058 0.960 9345 信息与控制0.669 0.045 0.883 10196 自动化学报0.572 0.044 0.927 16617 控制理论与应用0.555 0.039 0.747 14108 化工自动化及仪表0.444 0.054 0.423 4689 传感技术学报0.431 0.083 0.514 86110 传感器与微系统0.429 0.017 0.481 102111 模式识别与人工智能0.384 0.000 —48512 精密制造与自动化0.333 0.000 0.289 14613 自动化与仪器仪表0.316 0.041 0.297 31514 冶金自动化0.312 0.068 0.289 30015 传感器世界0.305 0.024 0.319 24016 制造业自动化0.302 0.018 0.310 51117 液压气动与密封0.282 0.263 0.252 23318 工矿自动化0.278 0.015 0.266 28019 自动化技术与应用0.259 0.007 0.272 42920 指挥控制与仿真0.256 0.036 0.249 19921 自动化与仪表0.226 0.007 0.185 21422 Journal of Control Theory and Applications 0.220 0.029 —5523 液压与气动0.217 0.024 0.226 55724 机械制造与自动化0.197 0.015 0.189 25725 电气传动自动化0.187 0.000 0.276 22326 自动化博览0.168 0.009 0.199 17427 传动技术0.164 0.033 0.189 4628 自动化信息与工程0.154 0.035 0.128 5129 系统仿真技术0.119 0.019 —1230 智能系统学报0.112 0.035 —3331 流体传动与控制0.104 0.018 —4332 机器人技术与应用0.099 0.000 0.346 14233 电气自动化0.099 0.019 —15434 International Journal of Automation and Computing 0.077 0.000 —8本类目计量指标平均值0.344 0.039 —581。

数据结构(C语言版)严蔚敏课后习题答案.

数据结构(C语言版)严蔚敏课后习题答案.

数据结构(C语言版)严蔚敏第1章绪论1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号表示。

在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。

是对一般数据类型的扩展。

1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。

一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。

抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。

在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。

1.3 设有数据结构(D,R),其中{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =试按图论中图的画法惯例画出其逻辑结构图。

解:1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

解:ADT Complex{数据对象:D={r,i|r,i 为实数}数据关系:R={<r,i>}基本操作: InitComplex(&C,re,im)操作结果:构造一个复数C ,其实部和虚部分别为re和imDestroyCmoplex(&C)操作结果:销毁复数CGet(C,k,&e)操作结果:用e返回复数C的第k元的值Put(&C,k,e)操作结果:改变复数C的第k元的值为eIsAscending(C)操作结果:如果复数C的两个元素按升序排列,则返回1,否则返回0IsDescending(C)操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0Max(C,&e)操作结果:用e返回复数C的两个元素中值较大的一个Min(C,&e)操作结果:用e返回复数C的两个元素中值较小的一个}ADT ComplexADT RationalNumber{数据对象:D={s,m|s,m为自然数,且m不为0}数据关系:R={<s,m>}基本操作:InitRationalNumber(&R,s,m)操作结果:构造一个有理数R,其分子和分母分别为s和mDestroyRationalNumber(&R)操作结果:销毁有理数RGet(R,k,&e)操作结果:用e返回有理数R的第k元的值Put(&R,k,e)操作结果:改变有理数R的第k元的值为eIsAscending(R)操作结果:若有理数R的两个元素按升序排列,则返回1,否则返回0IsDescending(R)操作结果:若有理数R的两个元素按降序排列,则返回1,否则返回0Max(R,&e)操作结果:用e返回有理数R的两个元素中值较大的一个Min(R,&e)操作结果:用e返回有理数R的两个元素中值较小的一个}ADT RationalNumber1.5 试画出与下列程序段等价的框图。

学科专业代码081200

学科专业代码081200
36
秋季
S7700015Q
高级运筹学
2
36
秋季
S7700038Q
小波分析
2
36
秋季
S7700050C
网络科学导论
1
18
春季
S7700051Q
复杂网络建模
2
36
秋季
专业基础课
S7101001Q
人工智能
2
36
秋季
S7101011C
数据库系统原理
2
36
春季
S7101002Q
算法设计与分析
2
28/8
秋季
S7101003Q
S7700005QN
历史文明与国际关系
1
18
秋季
S7700047Q
幸福与公正
1
18
秋季
S7700048Q
文艺与审美鉴赏
1
18
秋季
必修环节
学术活动
1~2学分(学术活动参加5次~9次,记为1学分;参加10次或10次以上记为2学分)
学科专业代码:081200
学科专业名称:计算机科学与技术
类型:学术研究型
研究方向:
1.计算机应用技术2.计算机软件与理论
3.模式识别与智能系统4.信息安全
课程设置:
课程性质
类别
课程编号
课程名称
学分
学时
课内/实验
学期
备注



通识课
S7700001Q
中国特色社会主义理论与实践研究
2
36
秋季
S7700002Q
计算分子生物学
2
36
秋季
0~4学分为跨一级学科专业课

苏大13 计算机 DS OS考纲

苏大13 计算机 DS OS考纲
(四)文件管理 1、文件系统概念、功能、结构和实现; 2、磁盘结构及其调度算法。
(五)输入/输出管理 1、概念、功能、接口的基本含义及其相关实例。
二、操作系统 (一)操作系统及其相关概念 1、操作系统的概念、发展、类型; 2、操作系统的功能、结构。
(二)进程管理 1、进程概念、调度算法、进程间通信; 2、进程同步机制、应用; 3、死锁概念、处理。
(三)内存管理 1、内存分配的策略及其分类; 2、页式管理、请求式页式管理、分段管理、段页式管理; 3、虚存管理的性能分析。
2012《数据结构与操作系统》科目考查的 内容范围
一、数据结构 (一)概述 1、数据、数据对象、数据结构、数据类型 2、算法及算法描述 3、算法的时间复杂度和空间复杂度
(二)线性表 1、线性表的概念和基本操作 2、线性表类的定义和实现 3、线性表的应用及算法
(三)栈 1、栈的概念和基本操作 2、栈类的定义和实现 3、栈的应用及算法
(十二)排序 1、掌握有关排序的基本概念 2、插入排序算法实现及性能分析 3、选择排序算法实现及性能分析 4、希尔排序算法基本原理 5、归并排序算法实现及性能分析 6、快速排序算法实现及性能分析 7、堆和堆排序算法实现及性能分析 8、基数排序算法的基本原理 9、各种排序算法在时间、空间、程序效率等方面的比较
(十一)查找 1、有关查找的基本概念 2、顺序查找算法实现及性能分析 3、二分查找算法实现及性能分析 4、二叉查找树的基本概念 5、二叉查找树下的查找、插入、删除算法 6、二叉查找树建立算法 7、AVL树定义 8、哈希查找的概念、哈希函数的选择及冲突解决方法 9、哈希查找算法实现及性能分析 10、不同查找算法的性能比较
(四)队列 1、队列的概念和基本操作 2、队列类的定义和实现 3、队列的应用及算法

2014年澳门特别行政区数据总结入门

2014年澳门特别行政区数据总结入门
int f=0,r,visited[]; //f和r分别是队列的头尾指针,visited[]是访问数组
for (i=1;i<=n;i++) {visited[i]=0;s[i]=0;} //初始化,各顶点未确定属于那个集合
Q[1]=1; r=1; s[1]=1;//顶点1放入集合S1
if (num==n) {printf(“%d是有向图的根。\n”,v); num=0;}//if
p=g[v].firstarc;
while (p)
{if (visied[p->adjvex]==0) dfs (p->adjvex);
p=p->next;} //while
else //读入的整数等于-1时退栈。
{if(top==0){printf(“栈空\n”);exit(0);}
else printf(“出栈元素是%d\n”,s[top--]);}
}
}//算法结
4、有一种简单的排序算法,叫做计数排序(count sorting)。这种排序算法对一个待排序的表(用数组表示)进行排序,并将排序结果存放到另一个新的表中。必须注意的是,表中所有待排序的关键码互不相同,计数排序算法针对表中的每个记录,扫描待排序的表一趟,统计表中有多少个记录的关键码比该记录的关键码小,假设针对某一个记录,统计出的计数值为c,那么,这个记录在新的有序表中的合适的存放位置即为c。
for (j=1;j<=n;j++)
if (w[i][k]+w[k][j]<w[i][j]) w[i][j]=w[i][k]+w[k][j];
m=MAXINT; //设定m为机器内最大整数。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、题目中要求矩阵两行元素的平均值按递增顺序排序,由于每行元素个数相等,按平均值排列与按每行元素之和排列是一个意思。

所以应先求出各行元素之和,放入一维数组中,然后选择一种排序方法,对该数组进行排序,注意在排序时若有元素移动,则与之相应的行中各元素也必须做相应变动。

void Translation(float *matrix,int n)//本算法对n×n的矩阵matrix,通过行变换,使其各行元素的平均值按递增排列。

{int i,j,k,l;float sum,min; //sum暂存各行元素之和float *p, *pi, *pk;for(i=0; i<n; i++){sum=0.0; pk=matrix+i*n; //pk指向矩阵各行第1个元素.for (j=0; j<n; j++){sum+=*(pk); pk++;} //求一行元素之和.*(p+i)=sum; //将一行元素之和存入一维数组.}//for ifor(i=0; i<n-1; i++) //用选择法对数组p进行排序{min=*(p+i); k=i; //初始设第i行元素之和最小.for(j=i+1;j<n;j++) if(p[j]<min) {k=j; min=p[j];} //记新的最小值及行号.if(i!=k) //若最小行不是当前行,要进行交换(行元素及行元素之和){pk=matrix+n*k; //pk指向第k行第1个元素.pi=matrix+n*i; //pi指向第i行第1个元素.for(j=0;j<n;j++) //交换两行中对应元素.{sum=*(pk+j); *(pk+j)=*(pi+j); *(pi+j)=sum;}sum=p[i]; p[i]=p[k]; p[k]=sum; //交换一维数组中元素之和.}//if}//for ifree(p); //释放p数组.}// Translation[算法分析] 算法中使用选择法排序,比较次数较多,但数据交换(移动)较少.若用其它排序方法,虽可减少比较次数,但数据移动会增多.算法时间复杂度为O(n2).2、假设以邻接矩阵作为图的存储结构,编写算法判别在给定的有向图中是否存在一个简单有向回路,若存在,则以顶点序列的方式输出该回路(找到一条即可)。

(注:图中不存在顶点到自己的弧)有向图判断回路要比无向图复杂。

利用深度优先遍历,将顶点分成三类:未访问;已访问但其邻接点未访问完;已访问且其邻接点已访问完。

下面用0,1,2表示这三种状态。

前面已提到,若dfs(v)结束前出现顶点u到v的回边,则图中必有包含顶点v和u的回路。

对应程序中v的状态为1,而u是正访问的顶点,若我们找出u的下一邻接点的状态为1,就可以输出回路了。

void Print(int v,int start ) //输出从顶点start开始的回路。

{for(i=1;i<=n;i++)if(g[v][i]!=0 && visited[i]==1 ) //若存在边(v,i),且顶点i的状态为1。

{printf(“%d”,v);if(i==start) printf(“\n”); else Print(i,start);break;}//if}//Printvoid dfs(int v){visited[v]=1;for(j=1;j<=n;j++ )if (g[v][j]!=0) //存在边(v,j)if (visited[j]!=1) {if (!visited[j]) dfs(j); }//ifelse {cycle=1; Print(j,j);}visited[v]=2;}//dfsvoid find_cycle() //判断是否有回路,有则输出邻接矩阵。

visited数组为全局变量。

{for (i=1;i<=n;i++) visited[i]=0;for (i=1;i<=n;i++ ) if (!visited[i]) dfs(i);}//find_cycle3、冒泡排序算法是把大的元素向上移(气泡的上浮),也可以把小的元素向下移(气泡的下沉)请给出上浮和下沉过程交替的冒泡排序算法。

48.有n个记录存储在带头结点的双向链表中,现用双向起泡排序法对其按上升序进行排序,请写出这种排序的算法。

(注:双向起泡排序即相邻两趟排序向相反方向起泡)4、题目中要求矩阵两行元素的平均值按递增顺序排序,由于每行元素个数相等,按平均值排列与按每行元素之和排列是一个意思。

所以应先求出各行元素之和,放入一维数组中,然后选择一种排序方法,对该数组进行排序,注意在排序时若有元素移动,则与之相应的行中各元素也必须做相应变动。

void Translation(float *matrix,int n)//本算法对n×n的矩阵matrix,通过行变换,使其各行元素的平均值按递增排列。

{int i,j,k,l;float sum,min; //sum暂存各行元素之和float *p, *pi, *pk;for(i=0; i<n; i++){sum=0.0; pk=matrix+i*n; //pk指向矩阵各行第1个元素.for (j=0; j<n; j++){sum+=*(pk); pk++;} //求一行元素之和.*(p+i)=sum; //将一行元素之和存入一维数组.}//for ifor(i=0; i<n-1; i++) //用选择法对数组p进行排序{min=*(p+i); k=i; //初始设第i行元素之和最小.for(j=i+1;j<n;j++) if(p[j]<min) {k=j; min=p[j];} //记新的最小值及行号.if(i!=k) //若最小行不是当前行,要进行交换(行元素及行元素之和){pk=matrix+n*k; //pk指向第k行第1个元素.pi=matrix+n*i; //pi指向第i行第1个元素.for(j=0;j<n;j++) //交换两行中对应元素.{sum=*(pk+j); *(pk+j)=*(pi+j); *(pi+j)=sum;}sum=p[i]; p[i]=p[k]; p[k]=sum; //交换一维数组中元素之和.}//if}//for ifree(p); //释放p数组.}// Translation[算法分析] 算法中使用选择法排序,比较次数较多,但数据交换(移动)较少.若用其它排序方法,虽可减少比较次数,但数据移动会增多.算法时间复杂度为O(n2).5、证明由二叉树的中序序列和后序序列,也可以唯一确定一棵二叉树。

当n=1时,只有一个根结点,由中序序列和后序序列可以确定这棵二叉树。

设当n=m-1时结论成立,现证明当n=m时结论成立。

设中序序列为S1,S2,…,Sm,后序序列是P1,P2,…,Pm。

因后序序列最后一个元素Pm是根,则在中序序列中可找到与Pm相等的结点(设二叉树中各结点互不相同)Si(1≤i≤m),因中序序列是由中序遍历而得,所以Si是根结点,S1,S2,…,Si-1是左子树的中序序列,而Si+1,Si+2,…,Sm是右子树的中序序列。

若i=1,则S1是根,这时二叉树的左子树为空,右子树的结点数是m-1,则{S2,S3,…,Sm}和{P1,P2,…,Pm-1}可以唯一确定右子树,从而也确定了二叉树。

若i=m,则Sm是根,这时二叉树的右子树为空,左子树的结点数是m-1,则{S1,S2,…,Sm-1}和{P1,P2,…,Pm-1}唯一确定左子树,从而也确定了二叉树。

最后,当1<i<m时,Si把中序序列分成{S1,S2,…,Si-1}和{Si+1,Si+2,…,Sm}。

由于后序遍历是“左子树—右子树—根结点”,所以{P1,P2,…,Pi-1}和{Pi,Pi+1,…Pm-1}是二叉树的左子树和右子树的后序遍历序列。

因而由{S1,S2,…,Si-1}和{P1,P2,…,Pi-1}可唯一确定二叉树的左子树,由{Si+1,Si+2,…,Sm}和{Pi,Pi+1,…,Pm-1}可唯一确定二叉树的右子树。

6、数组A和B的元素分别有序,欲将两数组合并到C数组,使C仍有序,应将A和B拷贝到C,只要注意A和B数组指针的使用,以及正确处理一数组读完数据后将另一数组余下元素复制到C中即可。

void union(int A[],B[],C[],m,n)//整型数组A和B各有m和n个元素,前者递增有序,后者递减有序,本算法将A和B归并为递增有序的数组C。

{i=0; j=n-1; k=0;// i,j,k分别是数组A,B和C的下标,因用C描述,下标从0开始while(i<m && j>=0)if(a[i]<b[j]) c[k++]=a[i++] else c[k++]=b[j--];while(i<m) c[k++]=a[i++];while(j>=0) c[k++]=b[j--];}算法结束4、要求二叉树按二叉链表形式存储。

15分(1)写一个建立二叉树的算法。

(2)写一个判别给定的二叉树是否是完全二叉树的算法。

BiTree Creat() //建立二叉树的二叉链表形式的存储结构{ElemType x;BiTree bt;scanf(“%d”,&x); //本题假定结点数据域为整型if(x==0) bt=null;else if(x>0){bt=(BiNode *)malloc(sizeof(BiNode));bt->data=x; bt->lchild=creat(); bt->rchild=creat();}else error(“输入错误”);return(bt);}//结束 BiTreeint JudgeComplete(BiTree bt) //判断二叉树是否是完全二叉树,如是,返回1,否则,返回0{int tag=0; BiTree p=bt, Q[]; // Q是队列,元素是二叉树结点指针,容量足够大if(p==null) return (1);QueueInit(Q); QueueIn(Q,p); //初始化队列,根结点指针入队while (!QueueEmpty(Q)){p=QueueOut(Q); //出队if (p->lchild && !tag) QueueIn(Q,p->lchild); //左子女入队else {if (p->lchild) return 0; //前边已有结点为空,本结点不空else tag=1; //首次出现结点为空if (p->rchild && !tag) QueueIn(Q,p->rchild); //右子女入队else if (p->rchild) return 0; else tag=1;} //whilereturn 1; } //JudgeComplete7、证明由二叉树的中序序列和后序序列,也可以唯一确定一棵二叉树。

相关文档
最新文档