2014年澳门特别行政区数据要领入门
2014澳门特别行政区数据结构基础一点通科目一

10、若采用邻接矩阵法存储一个n个顶点的无向图,则该邻接矩阵是一个( D )。
A)上三角矩阵 B) 稀疏矩阵
C) 对角矩阵 D) 对称矩阵
11、在一个链队列中,假定front和rear分别为队首和队尾指针,则删除一个结点的操作为( B )。
22、在一棵度为3的树中,度为3的结点个数为2,度为2的结点个数为1,则度为0的结点个数为( C )。
A)4 B)5
C)6 D)7
23、有一个有序表{1,4,6,10,18,35,42,53,67,71,78,84,92,99}。当用二分查找法查找键值为84的结点时,经( B )比较后查找成功。
1、设一数列的顺序为1,2,3,4,5,6,通过栈结构不可能排成的顺序数列为( B )。
A)3,2,5,6,4,1 B)1,5,4,6,2,3
C)2,4,3,5,1,6 D)4,5,3,6,2,1
2、( C )在进行插入操作时,常产生假溢出现象。
A)顺序栈 B)循环队列
33、链式存储的存储结构所占存储空间( A )。
A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
B)只有一部分,存放结点值
C)只有一部分,存储表示结点间关系的指针
D)分两部分,一部分存放结点值,另一部分存放结点所占单元数
34、用一维数组A进行顺序存储时,若起始地址为loc(A1),元素长度为c,则A的第i个数组单元在存放地址loc(Ai),等于( B )。
A)线性表 B)栈
C)队列 D)集合
30、对待排序的元素序列进行划分,将其分为左、右两个子序列,再对两个子序列施加同样的排序操作,直到子序列为空或只剩一个元素为止。这样的排序方法是( A )。
2014澳门特别行政区现代预防医学考试技巧重点

74、维持正常生理功能所需要营养素的量称为( C )
A.营养素供给量 B.营养素平均需要量 C.营养素需要量 D.营养素适宜摄入量
75、成人每人每日食盐用量不宜超过(A )
A.6g B.8g C.10g D.16g
76、决定粉尘对人体危害性质和程度的是( B )
30、慢性汞中毒的特有症状为( A)
A.震颤 B.易兴奋症 C.汞线 D.肾脏损害
31、矽尘作业通常是指粉尘中含游离二氧化硅在(C )
A.20%以上的作业 B.15%以上的作业 C.10%以上的作业 D.5%以上的作业
32、慢性汞中毒的特有症状为( A)
A.震颤 B.易兴奋症 C.汞线 D.肾脏损害
33、在体内氧化产生16.74KJ热量的是( C )
A.脂肪 B.维生素 C.蛋白质 D.无机盐
34、碳水化合物的生理功能是( D)
A.提供脂溶性维生素 B.提供必需脂肪酸
C.不能提供热能 D.为机体提供膳食纤维
35、有机磷农药中毒时,可消除或减轻毒蕈碱样症状的药物是( A )
1、相对数是表示( B )
A.计量资料相对大小的指标 B.事物相对关系的指标 C.两事物联系程度的指标 D.动态分析指标
2、铅中毒时实验室检查可出现( C )
A.尿ALA降低 B.尿CP降低 C.血FEP升高 D.Hb升高
3、维持正常生理功能所需要营养素的量称为( C )
A.铅 B.汞 C.铬 D.镉
45、为防止粮食霉变,一般粮食含水量应在( B )
A.13%以下 B.15%以下 C.18%以下 D.20%以下
46、一般在冬季病房、治疗室的室温为( C)
A.16~20℃ B.18~22℃ C.20~22℃ D.20~23℃
2014澳门特别行政区数据分析深入

1、我们可用“破圈法”求解带权连通无向图的一棵最小代价生成树。
所谓“破圈法”就是“任取一圈,去掉圈上权最大的边”,反复执行这一步骤,直到没有圈为止。
请给出用“破圈法”求解给定的带权连通无向图的一棵最小代价生成树的详细算法,并用程序实现你所给出的算法。
注:圈就是回路。
2、二路插入排序是将待排关键字序列r[1..n]中关键字分二路分别按序插入到辅助向量d[1..n]前半部和后半部(注:向量d可视为循环表),其原则为,先将r[l]赋给d[1],再从r[2] 记录开始分二路插入。
编写实现二路插入排序算法。
3、二部图(bipartite graph) G=(V,E)是一个能将其结点集V分为两不相交子集V 1和V2=V-V1的无向图,使得:V1中的任何两个结点在图G中均不相邻,V2中的任何结点在图G中也均不相邻。
(1).请各举一个结点个数为5的二部图和非二部图的例子。
(2).请用C或PASCAL编写一个函数BIPARTITE判断一个连通无向图G是否是二部图,并分析程序的时间复杂度。
设G用二维数组A来表示,大小为n*n(n为结点个数)。
请在程序中加必要的注释。
若有必要可直接利用堆栈或队列操作。
【4、约瑟夫环问题(Josephus问题)是指编号为1、2、…,n的n(n>0)个人按顺时针方向围坐成一圈,现从第s个人开始按顺时针方向报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列,…,如此重复直到所有的人全部出列为止。
现要求采用循环链表结构设计一个算法,模拟此过程。
5、二部图(bipartite graph) G=(V,E)是一个能将其结点集V分为两不相交子集V 1和V2=V-V1的无向图,使得:V1中的任何两个结点在图G中均不相邻,V2中的任何结点在图G中也均不相邻。
(1).请各举一个结点个数为5的二部图和非二部图的例子。
(2).请用C或PASCAL编写一个函数BIPARTITE判断一个连通无向图G是否是二部图,并分析程序的时间复杂度。
2015年澳门特别行政区数据分析章程

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、设有一组初始记录关键字为(45,80,48,40,22,78),要求构造一棵二叉排序树并给出构造过程。
3、根据二叉排序树中序遍历所得结点值为增序的性质,在遍历中将当前遍历结点与其前驱结点值比较,即可得出结论,为此设全局指针变量pre(初值为null)和全局变量flag,初值为true。
若非二叉排序树,则置flag为false。
#define true 1#define false 0typedef struct node{datatype data; struct node *llink,*rlink;} *BTree;void JudgeBST(BTree t,int flag)// 判断二叉树是否是二叉排序树,本算法结束后,在调用程序中由flag得出结论。
{ if(t!=null && flag){ Judgebst(t->llink,flag);// 中序遍历左子树if(pre==null)pre=t;// 中序遍历的第一个结点不必判断else if(pre->data<t->data)pre=t;//前驱指针指向当前结点else{flag=flase;} //不是完全二叉树Judgebst (t->rlink,flag);// 中序遍历右子树}//JudgeBST算法结束4、设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左,右两个儿子的结点个数N2;只有非空左儿子的个数NL;只有非空右儿子的结点个数NR和叶子结点个数N0。
2014年整理中国行政区域划分

中华人民共和国行政区划分:中华人民共和国现行行政区划,共有34个省级行政区,包括23个省、5个自治区、4个直辖市、2个特别行政区。
中华人民共和国一级行政区划(34个)类别名称简称省会或首府直辖市(4个)北京市京-天津市津-重庆市渝-上海市沪-省(23个)河北省冀石家庄市山西省晋太原市辽宁省辽沈阳市吉林省吉长春市黑龙江省黑哈尔滨市江苏省苏南京市浙江省浙杭州市安徽省皖合肥市福建省闽福州市江西省赣南昌市山东省鲁济南市河南省豫郑州市湖北省鄂武汉市湖南省湘长沙市广东省粤广州市海南省琼海口市四川省川/蜀成都市贵州省黔/贵贵阳市云南省滇/云昆明市陕西省陕/秦西安市甘肃省甘/陇兰州市青海省青西宁市台湾省台台北自治区(5个)内蒙古自治区内蒙古呼和浩特市广西壮族自治区桂南宁市宁夏回族自治区宁银川市新疆维吾尔自治区新乌鲁木齐市西藏自治区藏拉萨市特别行政区香港特别行政区港-(2个)澳门特别行政区澳-中国地级行政区名单截至2013年04月,中国大陆地级区划共计334个,其中287个地级市、30个自治州、14个地区、3个盟。
华北地区(行政区划代码以1开头),共34个地级行政区河北省(11个)山西省(11个)内蒙古自治区(12个)石家庄市太原市呼和浩特市唐山市大同市包头市秦皇岛市阳泉市乌海市邯郸市长治市赤峰市邢台市晋城市呼伦贝尔市保定市朔州市通辽市张家口市忻州市乌兰察布市承德市吕梁市鄂尔多斯市沧州市晋中市巴彦淖尔市廊坊市临汾市兴安盟衡水市运城市锡林郭勒盟阿拉善盟东北地区(行政区划代码以2开头),共36个地级行政区辽宁省(14个)吉林省(9个)黑龙江省(13个)沈阳市长春市哈尔滨市大连市吉林市齐齐哈尔市鞍山市四平市牡丹江市抚顺市辽源市佳木斯市本溪市通化市大庆市丹东市白山市伊春市锦州市白城市鸡西市营口市松原市鹤岗市阜新市延边朝鲜族自治州双鸭山市辽阳市七台河市盘锦市绥化市铁岭市黑河市朝阳市大兴安岭地区葫芦岛市华东地区(行政区划代码以3开头),共77个地级行政区江苏省(13个)浙江省(11个)安徽省(16个)福建省(9个)江西省(11个)山东省(17个)南京市杭州市合肥市福州市南昌市济南市无锡市宁波市芜湖市莆田市赣州市青岛市徐州市温州市蚌埠市泉州市宜春市淄博市常州市绍兴市淮南市厦门市吉安市枣庄市苏州市湖州市马鞍山市漳州市上饶市东营市南通市嘉兴市淮北市龙岩市抚州市烟台市连云港市金华市铜陵市三明市九江市潍坊市淮安市衢州市安庆市南平市景德镇市济宁市盐城市台州市黄石市宁德市萍乡市泰安市扬州市丽水市阜阳市新余市威海市镇江市舟山市宿州市鹰潭市日照市泰州市滁州市滨州市宿迁市六安市德州市宣城市聊城市池州市临沂市亳州市菏泽市莱芜市中南地区(行政区划代码以4开头),共82个地级行政区河南省(17个)湖北省(13个)湖南省(14个)广东省(21个)广西壮族自治区(14个)海南省(3个)郑州市武汉市长沙市广州市南宁市海口市开封市黄石市株洲市深圳市柳州市三亚市洛阳市十堰市湘潭市珠海市桂林市三沙市平顶山市荆州市衡阳市汕头市梧州市安阳市宜昌市邵阳市佛山市北海市鹤壁市襄阳市岳阳市韶关市崇左市新乡市鄂州市张家界市湛江市来宾市焦作市荆门市益阳市肇庆市贺州市濮阳市黄冈市常德市江门市玉林市许昌市孝感市娄底市茂名市百色市漯河市咸宁市郴州市惠州市河池市三门峡市随州市永州市梅州市钦州市商丘市恩施土家族苗族自治州怀化市汕尾市防城港市周口市湘西土家族苗族自治州河源市贵港市驻马店市阳江市南阳市清远市信阳市东莞市中山市潮州市揭阳市云浮市西南地区(行政区划代码以5开头),共53个地级行政区四川省(21个)贵州省(9个)云南省(16个)西藏自治区(7个)成都市贵阳市昆明市拉萨市绵阳市六盘水市昭通市昌都地区自贡市遵义市曲靖市山南地区攀枝花市铜仁市玉溪市日喀则地区泸州市毕节市普洱市那曲地区德阳市安顺市保山市阿里地区广元市黔西南布依族苗族自治州丽江市林芝地区遂宁市黔东南苗族侗族自治州临沧市内江市黔南布依族苗族自治州楚雄彝族自治州乐山市红河哈尼族彝族自治州资阳市文山壮族苗族自治州宜宾市西双版纳傣族自治州南充市大理白族自治州达州市德宏傣族景颇族自治州雅安市怒江僳僳族自治州广安市迪庆藏族自治州巴中市眉山市阿坝藏族羌族自治州甘孜藏族自治州凉山彝族自治州西北地区(行政区划代码以6开头),共51个地级行政区陕西省(10个)甘肃省(14个)青海省(8个)宁夏回族自治区(5个)新疆维吾尔自治区(14个)西安市兰州市西宁市银川市乌鲁木齐市铜川市嘉峪关市海东市石嘴山市克拉玛依市宝鸡市金昌市海北藏族自治州吴忠市昌吉回族自治州咸阳市白银市黄南藏族自治州固原市博尔塔拉蒙古自治州渭南市天水市海南藏族自治州中卫市伊犁哈萨克自治州汉中市酒泉市果洛藏族自治州巴音郭楞蒙古自治州安康市张掖市玉树藏族自治州克孜勒苏柯尔克孜自治州商洛市武威市海西蒙古族藏族自治州塔城地区延安市定西市阿勒泰地区榆林市陇南市吐鲁番地区平凉市哈密地区庆阳市阿克苏地区临夏回族自治州喀什地区甘南藏族自治州和田地区台湾省(2个):台北市、高雄市。
2014澳门特别行政区数据要领深入

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、编程实现单链表的就地逆置。
23.在数组 A[1..n]中有n个数据,试建立一个带有头结点的循环链表,头指针为h,要求链中数据从小到大排列,重复的数据在链中只保存一个.3、根据二叉排序树中序遍历所得结点值为增序的性质,在遍历中将当前遍历结点与其前驱结点值比较,即可得出结论,为此设全局指针变量pre(初值为null)和全局变量flag,初值为true。
2014年澳门经济情况
经济经济概况澳门经济规模不大,但外向度高,是区内税率最低的地区之一,财政金融稳健,无外汇管制,具有自由港及独立关税区地位,是亚太区内极具经济活力的一员,也是连接内地和国际市场的重要窗口和桥梁。
澳门特别行政区成立以来,在旅游博彩业的带动下,经济保持了较快的增长速度。
踏入2014年,随着内地经济放缓以及各项调控措施浮现,自6月起博彩毛收入连续按年下跌,经济开始进入调整巩固期。
2014年,本地生产总值为4,433亿元,按年实质收缩0.4%,人均本地生产总值为713,514元。
经济收缩的主要原因是博彩服务出口减少7.9%,而其他旅游服务出口轻微下跌0.3%。
至2014年底,财政储备资产总值为2,463.4亿澳门元,较2013年同期大幅增加了774.4亿澳门元。
外汇储备方面,较2013年同期增加了1.9%,至1314亿澳门元。
金融管理局的数据显示,截至2015年5月底,澳门特区的外汇储备资产总额经初步统计为1,391亿澳门元(174.2亿美元)。
2013年5月,世界贸易组织对澳门进行每6年一次的贸易政策审议。
世贸组织秘书处报告表示,澳门奉行开放经济政策,实施零关税,贸易与投资限制极少,同时澳门特区以服务业为主的经济体系在过去6年间经济表现理想。
同时,世贸组织成员对澳门的贸易政策和营商环境获得进一步完善表示肯定,其中包括:完善知识产权制度、进一步开放服务业,尤其是电信服务、促进贸易便利化,如无纸化清关制度以及提高公共行政管理的透明度。
这是澳门特区政府成立后第三次的审议会议,对上一次是在2007年进行。
美国传统基金发布的2015年度「全球经济自由度指数」报告中,澳门在全球经济体的排名由2014年的29位降至34位;亚太地区排名由第7名跌至第9名。
报告指出,澳门在劳动力和货币自由度得分下跌,拖低整体经济自由度。
特区政府致力加强对外经济合作,利用自身独特的优势,逐步发展成为国际化的区域性商贸服务平台,有效发挥澳门与亚太地区、欧盟、拉丁语系国家,尤其是与葡语国家传统联系的优势,更好地担当内地与这些国家和地区经济合作的桥梁。
2014澳门特别行政区公务员考试公共基础知识考试技巧重点
正确答案:A
A.矛盾是事物变化发展原因的道理
B.事物的变化发展都是量变与质变相统一的观点
C.感性认识必须上升到理性认识
D.两点论与重点论相统一的方法论
正确答案:D
24、唯物辩证法认为,在原因和结果的关系问题上,结果是指( )。
A.引起一定现象的现象
B.先于某种现象的现象
C.被一定现象所引起的现象
D.既克服又保留,既批判又继承
正确答案:D
20、“一个地区的发展会产生全国效益”强调的是( )。
A.整体和部分不可分割
B.整体和部分有严格的界限
C.整体的性能状态与及变化会影响部分
D.部分的性能状态及其变化会影响整体
正确答案:D
21、马克思主义哲学最主要的特点表现在( )。
A.总的量变过程中的部分质变原理
B.质变形式非爆发式的原理
C.质变过程中量的扩张的原理
D.质、量、度三者关系的原理
正确答案:A
29、哲学的基本问题是( )。
A.物质和运动的关系问题
B.可知论和不可知论的关系问题
C.思维和存在的关系问题
D.理论和实践的关系问题
正确答案:C
30、在马克思主义哲学产生之前,不存在( )。
D.高于唯物主义同唯心主义斗争的
正确答案:C
18、列宁对辩证唯物主义物质范畴的定义是通过( )界定的。
A.物质和意识的关系
B.个别与一般的关系
C.哲学与具体科学的关系
D.认识与实践的关系
正确答案:A
19、唯物辩证法否定的“扬弃”是指( )。
A.全盘抛弃
2014澳门特别行政区会计基础考试题库
1、因特殊情况其他单位需要使用原始凭证的不正确做法是【】。
A.原始凭证不得借出B.经单位负责人批准可以查阅C.经单位负责人批准可以借出D.经单位负责人批准可以复制【答案解析】按照《会计档案管理办法》规定,单位的会计档案不得借出,如因特殊需要,需经单位负责人批准,可以查阅或复制。
2、下列经济业务引起等式两边同时变化的有【】。
A.以银行存款归还前欠贷款B.销售产品,货款未收C.以现金购买办公用品D.向银行借入款项,存入结算户【答案解析】会计等式的扩大式为"资产+费用=负债+所有者权益+收入"。
以现金购买办公用品,它的变化是费用增加,资产减少,除此之外,选项A、B、D业务的发生都会引起等式两边会计要素的变化。
3、全部经济业务事项按照会计要素的具体类别而设置的分类账户进行登记的账簿称为【】。
A.备查账簿B.序时账簿C.分类账簿D.三栏式账簿【答案解析】分类账簿是对全部经济业务事项按照会计要素的具体类别而设置的分类账户进行登记的账簿。
4、既可以作为登记总账依据,又可以作为登记明细账依据的是【】。
A.记账凭证B.汇总记账凭证C.原始凭证D.汇总原始凭证【答案解析】记账凭证既可以作为登记总账的依据,又可以作为登记明细账的依据。
5、全部经济业务事项按照会计要素的具体类别而设置的分类账户进行登记的账簿称为【】。
A.备查账簿B.序时账簿C.分类账簿D.三栏式账簿【答案解析】分类账簿是对全部经济业务事项按照会计要素的具体类别而设置的分类账户进行登记的账簿。
6、下列报表属于资产负债表附表的是【】。
A.利润表B.利润分配表C.应交增值税明细表D.主营业务收支明细表【答案解析】应交增值税明细表是资产负债表的附表,而利润分配表和主营业务收支明细表是利润表的附表。
7、对账时,账账核对不包括【】。
A.总账有关账户的余额核对B.总账与明细账之间的核对C.总账与备查账簿之间的核对D.总账与日记账的核对【答案解析】账账核对包括的内容:总分类账簿有关账户的余额核对;总分类账簿与所属明细分类账簿核对;总分类账簿与序时账簿核对;明细分类账簿之间的核对。
2014年香港特别行政区数据摘要
1、对一般二叉树,仅根据一个先序、中序、后序遍历,不能确定另一个遍历序列。
但对于满二叉树,任一结点的左右子树均含有数量相等的结点,根据此性质,可将任一遍历序列转为另一遍历序列(即任一遍历序列均可确定一棵二叉树)。
void PreToPost(ElemType pre[] ,post[],int l1,h1,l2,h2)//将满二叉树的先序序列转为后序序列,l1,h1,l2,h2是序列初始和最后结点的下标。
{if(h1>=l1){post[h2]=pre[l1]; //根结点half=(h1-l1)/2; //左或右子树的结点数PreToPost(pre,post,l1+1,l1+half,l2,l2+half-1) //将左子树先序序列转为后序序列PreToPost(pre,post,l1+half+1,h1,l2+half,h2-1) //将右子树先序序列转为后序序列} }//PreToPost32. .叶子结点只有在遍历中才能知道,这里使用中序递归遍历。
设置前驱结点指针pre,初始为空。
第一个叶子结点由指针head指向,遍历到叶子结点时,就将它前驱的rchild指针指向它,最后叶子结点的rchild为空。
LinkedList head,pre=null; //全局变量LinkedList InOrder(BiTree bt)//中序遍历二叉树bt,将叶子结点从左到右链成一个单链表,表头指针为head{if(bt){InOrder(bt->lchild); //中序遍历左子树if(bt->lchild==null && bt->rchild==null) //叶子结点if(pre==null) {head=bt; pre=bt;} //处理第一个叶子结点else{pre->rchild=bt; pre=bt; } //将叶子结点链入链表InOrder(bt->rchild); //中序遍历左子树pre->rchild=null; //设置链表尾}return(head); } //InOrder时间复杂度为O(n),辅助变量使用head和pre,栈空间复杂度O(n)2、两棵空二叉树或仅有根结点的二叉树相似;对非空二叉树,可判左右子树是否相似,采用递归算法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、约瑟夫环问题(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); /*调用函数*/
}
}
2、已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7},E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V3,V5>,<V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>}
写出G的拓扑排序的结果。
G拓扑排序的结果是:V1、V2、V4、V3、V5、V6、V7
3、设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。
4、有一种简单的排序算法,叫做计数排序(count sorting)。
这种排序算法对一个待排序的表(用数组表示)进行排序,并将排序结果存放到另一个新的表中。
必须注意的是,表中所有待排序的关键码互不相同,计数排序算法针对表中的每个记录,扫描待排序的表一趟,统计表中有多少个记录的关键码比该记录的关键码小,假设针对某一个记录,统计出的计数值为c,那么,这个记录在新的有序表中的合适的存放位置即为c。
(1) (3分)给出适用于计数排序的数据表定义;
(2) (7分)使用Pascal或C语言编写实现计数排序的算法;
(3) (4分)对于有n个记录的表,关键码比较次数是多少?
(4) (3分)与简单选择排序相比较,这种方法是否更好?为什么?
5、设指针变量p指向双向链表中结点A,指针变量q指向被插入结点B,要求给出在结点A 的后面插入结点B的操作序列(设双向链表中结点的两个指针域分别为llink和rlink)。
6、约瑟夫环问题(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); /*调用函数*/
}
}。