2011年香港特别行政区数据基础理论要领

合集下载

香港特别行政区历年主要财经指标主要指标概况统计(2011-2015)(二)

香港特别行政区历年主要财经指标主要指标概况统计(2011-2015)(二)

186
114
政府收支.金融.保险
(亿港元)
政府储备结余⑾⑿
6691
7339
政府收入总额⒀⒁
4377
4422
政府开支总额⒀⒁
3640
3773
货币供应量m3
港元⒂
40554
45456
外币⒃
40257
44248
总计
80811
89704
港汇指数(贸易总值(进口及整体出口)加权)(2010年1月=100)⒄
94.6
466
64.5 45.4
362 219
8285 4787 3962
52362 58128 110489 96.0
17942 12632 2235 432
20079 12553 2223 432
2015
75882 334364 258482
100.6 100.6 100.6 100.5
93.2 11436 1649
96.8
93.9
97.8
95.1
98.4
95.0 11190 1612
94.6 11281 1673
77.21 39.16 148.40 264.77
678
34.8 48.3
448 522
7557 4553 4335
48060 52792 100852 94.9
78.15 39.39 149.65 267.19
94.9
运输.通讯.旅游
进出香港货物
总卸下
(万吨)
17519
17214
总装上
(万吨)
13291
12738
集装箱吞吐量
(万标准集装箱) 2438

2011香港特别行政区《公共基础知识》考试技巧重点

2011香港特别行政区《公共基础知识》考试技巧重点

1、在使用Word进行文字编辑时,下面的叙述中____是错误的。

A、 Word可将正在编辑的文档另存为一个纯文本(TXT)文件B、使用“文件”菜单中的“打开”(OPEN)命令可以打开一个已存在的Word文档C、打印预览文档时,打印机必须是已经开启的D、 Word允许同时打开多个文档2、我们拨号上网时所用的被俗称为“猫”的设备是____。

A、编码解码器B、解调调制器C、调制解调器D、网络链接器3、在IE地址栏输入的“/”中,http代表的是____。

A、协议B、主机C、地址D、资源4、网络分为总线网、环型网、星型网、树型网和网状网是根据____分的。

A、网络拓扑结构B、信息交换方式C、通信介质D、网络操作系统5、在Word中,用鼠标拖拽方式进行复制和移动操作时,它们的区别是____。

A、移动时直接拖拽,复制时需要按住Ctrl键B、移动时直接拖拽,复制时需要按住shift键C、复制时直接拖拽,移动时需要按住Ctrl键D、复制时直接拖拽,移动时需要按住shift键6、存储器的最小存储单元是字节(即B),而容量常用KB表示,例如4KB表示存储单元有____。

A、4000个字B、4000个字节C、4096个字D、4096个字节7、目前,配有P4 CPU的微型计算机属于计算机的____。

A、第一代产品B、第二代产品C、第三代产品D、第四代产品8、下列设备中不是计算机网络专用设备的是____。

A、集线器B、电话机C、交换机D、网卡9、WINDOWS资源管理器中,反向选择若干文件的方法是____。

A、CTRL+单击选定需要的文件B、SHIFT+单击选定需要的文件,再单击反向选择C、用鼠标直接单击选择D、CTRL+单击选定不需要的文件,再单击编辑菜单中反向选择10、拍电报时的嘀表示短声,嗒表示长声;一组嘀嗒嘀嘀所表示的二进制编码可能是____。

A、1001B、1010C、1011D、110011、关于电子邮件下面的说法不正确的是____。

2010年香港特别行政区重要数据基础

2010年香港特别行政区重要数据基础

1、设有一个数组中存放了一个无序的关键序列K1、K
2、…、Kn。

现要求将Kn放在将元素排序后的正确位置上,试编写实现该功能的算法,要求比较关键字的次数不超过n。

51. 借助于快速排序的算法思想,在一组无序的记录中查找给定关键字值等于key的记录。

设此组记录存放于数组r[l..h]中。

若查找成功,则输出该记录在r数组中的位置及其值,否则显示“not find”信息。

请编写出算法并简要说明算法思想。

2、我们可用“破圈法”求解带权连通无向图的一棵最小代价生成树。

所谓“破圈法”就是“任取一圈,去掉圈上权最大的边”,反复执行这一步骤,直到没有圈为止。

请给出用“破圈法”求解给定的带权连通无向图的一棵最小代价生成树的详细算法,并用程序实现你所给出的算法。

注:圈就是回路。

3、若第n件物品能放入背包,则问题变为能否再从n-1件物品中选出若干件放入背包(这时背包可放入物品的重量变为s-w[n])。

若第n件物品不能放入背包,则考虑从n-1件物品选若干件放入背包(这时背包可放入物品仍为s)。

若最终s=0,则有一解;否则,若s<0或虽然s>0但物品数n<1,则无解。

(1)s-w[n],n-1 //Knap(s-w[n],n-1)=true
(2)s,n-1 // Knap←Knap(s,n-1)。

2011香港特别行政区计算机等级考试二级考试重点和考试技巧

2011香港特别行政区计算机等级考试二级考试重点和考试技巧

6、算法的空间复杂度是指(D)
A. 算法程序的长度 B. 算法程序中的指令条数 C. 算法程序所占的存储空间 D. 算法执行过程中所需要的存储空间
7、下列关于队列的叙述中正确的是(C)
A. 在队列中只能插入数据 B. 在队列中只能删除数据
C. 队列是先进先出的线性表 D. 队列是先进后出的线性表
8、下面描述中,符合结构化程序设计风格的是(A)
A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句
9、下列叙述中正确的是(C)
A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致
25、将E-R图转换到关系模式时,实体与联系都可以表示成(B)
A. 属性 B. 关系 C. 键 D. 域
26、下列关于队列的叙述中正确的是(C)
A. 在队列中只能插入数据 B. 在队列中只能删除数据
C. 队列是先进先出的线性表 D. 队列是先进后出的线性表
27、软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及(B)
10、下面概念中,不属于面向对象方法的是 (D)
A. 对象 B. 继承 C. 类 D. 过程调用
11、软件调试的目的是(B) 注:与软件测试要对比着复习
A.发现错误 B.改正错误 C.改善软件的性能 D.挖掘软件的潜能
12、软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及(B)

2011香港特别行政区会计基础必过技巧

2011香港特别行政区会计基础必过技巧

1、下列记录可以作为调整账面数字的原始凭证的是【】。

A.盘存单B.实存账存对比表C.银行存款余额调节表D.往来款项对账单【答案解析】对各项财产物资的盘点结果,应逐一填制盘存单,并同账面余额记录核对,确认盘盈或盘亏数,填制实存账存对比表,作为调整账面记录的原始凭证;盘存单不能作为调整账面数字的原始凭证;银行余额调节表只是为核对银行存款余额而编制的一个工作底稿,不能作为实际记账的凭证;往来款项对账单也不能作为实际记账的凭证。

2、制造业企业购人材料的运杂费,一般应计入【】。

A.材料采购成本B.产品成本C.制造费用D.期间费用【答案解析】运杂费是材料采购成本的组成部分。

3、下列对于各种财务报表报送的时间的要求,说法不正确的是【】。

A.月度财务报表于月份终了后10日内报出B.季度财务报表于季度终了后15日内报出C.半年度财务报表应于年度中期结束后60内报出D.年度财务报表应于年度终了后4个月内对外提供【答案解析】企业会计制度规定月度财务报表应当于月度终了后6天内(节假日顺延)报出。

4、期间费用不包括【】项目。

A.销售费用B.制造费用C.管理费用D.财务费用【答案解析】制造费用应计入生产成本,不属于期间费用。

5、预提本月应负担的短期借款利息3000元,该笔业务应编制【】。

A.收款凭证B.付款凭证C.转账凭证D.单式凭证【答案解析】预提利息时应借记"财务费用",贷记"预提费用",该笔业务未涉及货币资金的增减,故应编制转账凭证。

6、银行存款余额调节表、银行对账单应当保存【】。

A.3年B.永久C.5年D.15年【答案解析】银行存款余额调节表、银行对账单应当保存5年。

7、对账时,账账核对不包括【】。

A.总账有关账户的余额核对B.总账与明细账之间的核对C.总账与备查账簿之间的核对D.总账与日记账的核对【答案解析】账账核对包括的内容:总分类账簿有关账户的余额核对;总分类账簿与所属明细分类账簿核对;总分类账簿与序时账簿核对;明细分类账簿之间的核对。

2011年香港特别行政区基础数据要领

2011年香港特别行政区基础数据要领

1、本题要求建立有序的循环链表。

从头到尾扫描数组A,取出A[i](0<=i<n),然后到链表中去查找值为A[i]的结点,若查找失败,则插入。

LinkedList creat(ElemType A[],int n)//由含n个数据的数组A生成循环链表,要求链表有序并且无值重复结点{LinkedList h;h=(LinkedList)malloc(sizeof(LNode));//申请结点h->next=h; //形成空循环链表for(i=0;i<n;i++){pre=h;p=h->next;while(p!=h && p->data<A[i]){pre=p; p=p->next;} //查找A[i]的插入位置if(p==h || p->data!=A[i]) //重复数据不再输入{s=(LinkedList)malloc(sizeof(LNode));s->data=A[i]; pre->next=s; s->next=p;//将结点s链入链表中}}//forreturn(h);}算法结束2、证明由二叉树的中序序列和后序序列,也可以唯一确定一棵二叉树。

29. ①试找出满足下列条件的二叉树1)先序序列与后序序列相同 2)中序序列与后序序列相同3)先序序列与中序序列相同 4)中序序列与层次遍历序列相同3、将顶点放在两个集合V1和V2。

对每个顶点,检查其和邻接点是否在同一个集合中,如是,则为非二部图。

为此,用整数1和2表示两个集合。

再用一队列结构存放图中访问的顶点。

int BPGraph (AdjMatrix g)//判断以邻接矩阵表示的图g是否是二部图。

{int s[]; //顶点向量,元素值表示其属于那个集合(值1和2表示两个集合)int Q[];//Q为队列,元素为图的顶点,这里设顶点信息就是顶点编号。

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放入集合S1while(f<r){v=Q[++f]; if (s[v]==1) jh=2; else jh=1;//准备v的邻接点的集合号if (!visited[v]){visited[v]=1; //确保对每一个顶点,都要检查与其邻接点不应在一个集合中for (j=1,j<=n;j++)if (g[v][j]==1){if (!s[j]) {s[j]=jh; Q[++r]=j;} //邻接点入队列else if (s[j]==s[v]) return(0);} //非二部图}//if (!visited[v])}//whilereturn(1); }//是二部图[算法讨论] 题目给的是连通无向图,若非连通,则算法要修改。

2011年香港特别行政区数据理论要领

1、后序遍历最后访问根结点,即在递归算法中,根是压在栈底的。

采用后序非递归算法,栈中存放二叉树结点的指针,当访问到某结点时,栈中所有元素均为该结点的祖先。

本题要找p和q 的最近共同祖先结点r ,不失一般性,设p在q的左边。

后序遍历必然先遍历到结点p,栈中元素均为p的祖先。

将栈拷入另一辅助栈中。

再继续遍历到结点q时,将栈中元素从栈顶开始逐个到辅助栈中去匹配,第一个匹配(即相等)的元素就是结点p 和q的最近公共祖先。

typedef struct{BiTree t;int tag;//tag=0 表示结点的左子女已被访问,tag=1表示结点的右子女已被访问}stack;stack s[],s1[];//栈,容量够大BiTree Ancestor(BiTree ROOT,p,q,r)//求二叉树上结点p和q的最近的共同祖先结点r。

{top=0; bt=ROOT;while(bt!=null ||top&gt;0){while(bt!=null &amp;&amp; bt!=p &amp;&amp; bt!=q) //结点入栈{s[++top].t=bt; s[top].tag=0; bt=bt-&gt;lchild;} //沿左分枝向下if(bt==p) //不失一般性,假定p在q的左侧,遇结点p时,栈中元素均为p的祖先结点 {for(i=1;i&lt;=top;i++) s1[i]=s[i]; top1=top; }//将栈s的元素转入辅助栈s1 保存 if(bt==q) //找到q 结点。

for(i=top;i&gt;0;i--)//;将栈中元素的树结点到s1去匹配{pp=s[i].t;for (j=top1;j&gt;0;j--)if(s1[j].t==pp) {printf(“p 和q的最近共同的祖先已找到”);return (pp);} }while(top!=0 &amp;&amp; s[top].tag==1) top--; //退栈if (top!=0){s[top].tag=1;bt=s[top].t-&gt;rchild;} //沿右分枝向下遍历}//结束while(bt!=null ||top&gt;0)return(null);//q、p无公共祖先}//结束Ancestor2、根据二叉排序树中序遍历所得结点值为增序的性质,在遍历中将当前遍历结点与其前驱结点值比较,即可得出结论,为此设全局指针变量pre(初值为null)和全局变量flag,初值为true。

2011香港特别行政区毛概考试重点新总结A理论考试试题及答案

1、1938年,毛泽东在党的( D )全会上作的题为《论新阶段》的政治报告中最先提出了“马克思主义中国化”这个命题。

A、六届三中B、六届四中C、六届五中D、六届六中2、非公有制经济是( A )A.社会主义市场经济的重要组成部分B.社会主义经济的重要组成部分C. 社会主义性质经济D. 社会主义初级阶段公有制经济的重要组成部分3、1938年,毛泽东在党的( D )全会上作的题为《论新阶段》的政治报告中最先提出了“马克思主义中国化”这个命题。

A、六届三中B、六届四中C、六届五中D、六届六中4、在社会主义改造过程中,我国实行的高级形式的国家资本主义是( )A、委托加工B、计划订货C、统购包销D、公私合营5、我国解决民族问题的基本政策是( )A、联邦制B、民族自决C、民族自治D、民族区域自治6、我国解决民族问题的基本政策是( )A、联邦制B、民族自决C、民族自治D、民族区域自治7、我国的政党制度与西方多党制的区别是( ACE )A.中国共产党是执政党B.各民主党派也是执政党C.各民主党派是参政党D.各民主党派是在野党E.中国共产党同各民主党派合作的政治基础是坚持中国共产党的领导,坚持四项基本原则,共同担负起建设富强、民主、文明的社会主义现代化国家的任务8、在台湾问题上,我们的立场是( A )A.争取和平统一,但不承诺放弃使用武力B.争取和平统一,不首先使用武力C.只要台湾坚持一个中国的立场,统一日期可以拖延D.实行“一国两制”后,台湾特别行政区与香港享受同等的待遇9、坚持“二为”方向( ABDE )A.指为人民服务、为社会主义服务的方向B.因为社会主义文化应属于人民,为人民服务C.指为物质文明,为精神文明服务的方向D.社会主义文化的本质表现E.社会主义文化与资本主义文化的根本区别所在10、国有资产占优势,既要有量的优势,更要( A )A.注重质的提高B.注重比例适当C.注重控制国民经济命脉D.注重资产效益11、我国自改革开放以来,在对市场经济认识上的重大突破是( C )A.市场经济是法制经济B.市场机制对资源配置起基础性调节作用C.市场经济不属于社会基本制度的范畴D.市场经济是有国家干预的经济12、邓小平指出,我们搞社会主义必须坚持两条原则:一是以公有制为主体;二是( A )A.共同富裕B. 走社会主义道路C.共产党领导D.以经济建设为中心13、一国两制的内涵是( C )A.坚持一个中国即中华人民共和国B.两种社会制度即社会主义制度和资本主义制度C.坚持国家的主体是社会主义制度,部分地区是资本主义制度D.坚持运用法律手段解决大陆和特别行政区之间的矛盾14、在新民主义革命运动中处于中间地位的阶级和阶层有()A 、无产阶级B 、农民阶级C 、城市小资产阶级D 、民族资产阶级E 、地主阶级15、在台湾问题上,我们坚决反对( ABCDE )A.“一中一台”B.“两个中国”C.“一国两府”D.“台湾独立”E.“外国插手”16、遵义会议以后,直至抗日战争时期,是毛泽东思想的( C )A、萌芽时期B、形成时期C、成熟时期D、继续发展时期17、关于毛泽东思想,下列说法正确的是()A、是毛泽东个人的独创B、是中国共产党人集体智慧的结晶C、是马列主义在中国的运用和发展D、是把马列主义的普遍原理同中国革命的具体实践相结合的产物E、是被实践证明了的关于中国革命和建设的正确的理论原则和经验总结18、一国两制的前提是( A )A.国家主权统一于中华人民共和国B.港澳台实行高度自治.C.大陆实行社会主义制度D.港澳台资本主义制度不变19、民主是国体和政体的统一,二者的关系是( A )A.国体决定政体,政体表现和适应国体B. 国体等同于政体C.政体决定国体,国体表现和适应政体D.一般与个别的关系20、加强党的建设包括以下内容( BCDE )A.加强党的法制建设B.加强党的组织建设C.加强党的作风建设D.加强党的制度建设E.加强党的思想建设21、中国共产党的根本工作路线是( A )A、群众路线B、思想路线C、工人路线D、农民路线22、在建立国际政治经济新秩序的长期斗争中,必须始终以( B )为基础。

2011香港特别行政区最新公共基础知识(必备资料)

1、相对主义运动观认为()。

A.静止是运动的特殊状态B.运动和物质是不可分割的C.运动的形式是多样的D.只存在绝对运动而无静止正确答案:D2、我国著名的地质学家李四光在从事地质学研究中,自觉应用马克思主义哲学的基本原理和方法,创立了地质力学的新理论,对我国石油地质工作作出了巨大的贡献。

这说明( )。

A.哲学是对具体科学的概括和总结B.哲学随具体科学的发展而发展C.哲学是具体科学的总和D.哲学对具体科学的研究有指导作用正确答案:D3、否定方面是指()。

A.保持事物自己存在的方面B.促使事物走向死亡的方面C.事物内部好的方面D.事物内部坏的方面正确答案:B4、实际工作中的“一刀切”的错误是由于忽视了事物的()。

A.矛盾的普遍性B.矛盾的特殊性C.矛盾的同一性D.矛盾的斗争性正确答案:D5、爱因斯坦的相对论揭示的是()。

A.时间、空间可以离开物质自己运动B.时间、空间不随物质运动的速度而变化C.时间、空间是主观精神的表现形式D.时间、空间与物质运动不可分正确答案:D6、马克思主义哲学是整个马克思主义理论的( )。

A.主要内容B.理论基础C.核心部分D.实质和灵魂正确答案:B7、联系是指一切现象、事物()。

A.都有共同点B.都没有确定的界限C.都是不以人的意志为转移的D.都互相作用、互相影响和互相制约正确答案:D8、哲学为具体科学的研究提供( )。

A.一般方法B.经验材料C.理论结论D.具体方法正确答案:A9、唯物辩证法否定的“扬弃”是指()。

A.全盘抛弃B.绝对否认C.全盘肯定D.既克服又保留,既批判又继承正确答案:D10、“坐地日行八万里,巡天遥看一千河”,这一著名诗句包含的哲理是()。

A.物质运动的客观性和时空的主观性的统一B.物质运动的无限性和时空的有限性的统一C.时空的无限性和有限性的统一D.运动的绝对性和静止的相对性的统一正确答案:D11、事物发展的源泉在于()。

A.人的主观能动性B.事物之间的相互作用C.事物的内部矛盾D.外力的推动正确答案:D12、哲学的生命力从根本上说在于()。

2010年香港特别行政区基础数据要领

1、若第n件物品能放入背包,则问题变为能否再从n-1件物品中选出若干件放入背包(这时背包可放入物品的重量变为s-w[n])。

若第n件物品不能放入背包,则考虑从n-1件物品选若干件放入背包(这时背包可放入物品仍为s)。

若最终s=0,则有一解;否则,若s<0或虽然s>0但物品数n<1,则无解。

(1)s-w[n],n-1 //Knap(s-w[n],n-1)=true(2)s,n-1 // Knap←Knap(s,n-1)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() //判断是否有回路,有则输出邻接矩阵。

  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 i
for(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 i
free(p); //释放p数组.
}// Translation
[算法分析] 算法中使用选择法排序,比较次数较多,但数据交换(移动)较少.若用其它排序方法,虽可减少比较次数,但数据移动会增多.算法时间复杂度为O(n2).
2、设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左,右两个儿子的结点个数N2;只有非空左儿子的个数NL;只有非空右儿子的结点个数NR和叶子结点个数N0。

N2、NL、NR、N0都是全局量,且在调用count(t)之前都置为0.
typedef struct node
{int data; struct node *lchild,*rchild;}node;
int N2,NL,NR,N0;
void count(node *t)
{if (t->lchild!=NULL) if (1)___ N2++; else NL++;
else if (2)___ NR++; else (3)__ ;
if(t->lchild!=NULL)(4)____; if (t->rchild!=NULL) (5)____;
}
26.树的先序非递归算法。

void example(b)
btree *b;
{ btree *stack[20], *p;
int top;
if (b!=null)
{ top=1; stack[top]=b;
while (top>0)
{ p=stack[top]; top--;
printf(“%d”,p->data);
if (p->rchild!=null)
{(1)___; (2)___;
}
if (p->lchild!=null)
(3)___; (4)__;
}}}}
3、约瑟夫环问题(Josephus问题)是指编号为1、2、…,n的n(n>0)个人按顺时针方向围坐成一圈,现从第s个人开始按顺时针方向报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列,…,如此重复直到所有的人全部出列为止。

现要求采用循环链表结构设计一个算法,模拟此过程。

#include<stdlib.h>
typedef int datatype;
typedef struct node
{datatype data;
struct node *next;
}listnode;
typedef listnode *linklist;
void jose(linklist head,int s,int m)
{linklist k1,pre,p;
int count=1;
pre=NULL;
k1=head; /*k1为报数的起点*/
while (count!=s) /*找初始报数起点*/
{pre=k1;
k1=k1->next;
count++;
}
while(k1->next!=k1) /*当循环链表中的结点个数大于1时*/
{ p=k1; /*从k1开始报数*/
count=1;
while (count!=m) /*连续数m个结点*/
{ pre=p;
p=p->next;
count++;
}
pre->next=p->next; /*输出该结点,并删除该结点*/
printf("%4d",p->data);
free(p);
k1=pre->next; /*新的报数起点*/
}
printf("%4d",k1->data); /*输出最后一个结点*/
free(k1);
}
main()
{linklist head,p,r;
int n,s,m,i;
printf("n=");
scanf("%d",&n);
printf("s=");
scanf("%d",&s);
printf("m=",&m);
scanf("%d",&m);
if (n<1) printf("n<0");
else
{/*建表*/
head=(linklist)malloc(sizeof(listnode)); /*建第一个结点*/ head->data=n;
r=head;
for (i=n-1;i>0;i--) /*建立剩余n-1个结点*/
{ p=(linklist)malloc(sizeof(listnode));
p->data=i;
p->next=head;
head=p;
}
r->next=head; /*生成循环链表*/
jose(head,s,m); /*调用函数*/
}
}。

相关文档
最新文档