b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

约瑟夫环数据结构课程设计_new

电脑杂谈  发布时间:2019-08-24 13:01:52  来源:网络整理

约瑟夫环设计过程_约瑟夫环 实验报告_约瑟夫环事件

CHANGSHAUNIVERSITY TECHNOLOGY题目: 约瑟夫环 学生姓名:江元 所在院部:数学与计算科学学院 指导老师:龚红仿 2013 约瑟夫环学生姓名:江元 指导老师:龚红仿完成日期: 2013 约瑟夫环问题设计与推动摘要 约瑟夫问题是由古罗马著名的史学家 Josephus 提出的难题演变而来,所以 通常称为 Josephus 问题。改进约瑟夫问题的表述是:编号为 1,2,…,n 个人按顺时针方向围坐一圈,每人有一个密码 m(整数),留作其出圈后应报到 m后出圈,依次类推,即可求出出列顺序。因此约瑟夫环问题如若采用循环递归 则能较好的解决。循环链表的数据结构,就是将一个链表的最后一个节点指针指 向第一个结点。出列时,根据密码找到对应的人,打印其编号,将其密钥异或给 m后,释放结点,形成新的约瑟夫环,直到所有人出列结束。 关键字:约瑟夫环;循环链表;出列顺序;释放结点; 约瑟夫环问题设计与推动 Josephring ABSTRACT Josephproblem evolutionproposed ancientRome famous historian Josephus come,so often referred Josephusproblem. Improvement Josephproblem description individualsaccording clockwisedirection around circle,each (integer),keep ringshould reportedafter wecan calculate columnorder. So Joseph circle usingcircular linked list can verygood solution. Circulation list data structure, firstnode. Out, according correspondingperson, print Josephring, until all peopleout end.Keywords: Joseph ring; circular linked list; columnorder release nodes; 约瑟夫环问题设计与推动 需求预测11.1 课题内容1 1.2 要求1 详细设计23.1 程序中的数据类别2 3.2 函数运行过程概述3 设计和安装分析64.1 调试中碰到的难题6 4.2 经验和感受7 测试数据和检测结果8参考文献10 约瑟夫环问题设计与推动 需求分析1.1 课题内容: (1)本演示程序中,人数 应为任意的,首先应输入一个值赋给初始报数上限 m,程序应能自动保存出列人的序号和将出列的人所持的密码赋给 再次成为报数上限,如此循环,直至所有人都出列为止。

(2)演示程序以用户和计算机的对话形式执行,即在计算机终端上显示“提 示信息”之后,由客户在键盘上输入相应数据(即每个人所持的密码),每 个人的序号由程序自动分配。 (3)程序执行的命令包含: (1)构造数组;(2)输入数据;(3)执行报数,储存出列人的序号, 删除出列人的信息以及把出列人的密码赋给m;(4)结束。 (4)测试数据 n=7,7 个人的密码依次为:3,1,7,2,4约瑟夫环设计过程,8,4,首先 这正确的出列顺序为6,1,4,7,2,3,5。1.2 要求: (1)源程序要有适度的注释,使程序易于阅读; (2)函数用途要界定好(结构化程序设计); 要提供程序检测方案,程序一定要经得起测试,也要能运行出来,不能运行的程序是没有价值的。 概要设计该平台引入 语言研发,主要方式是选用适合的程序构架,灵活使用三种程序设计基本结构、函数等编写程序。 约瑟夫环问题设计与推动 2.1本程序包括三个模块,对应关系图为: 每个人依序出列打印出列顺序并传递结点模块;2.2 为了推动上述操作,应以双向循环链表为内存构架。 2.3 基本操作: Data_InPut( 操作结果:构造链表,初始化每个人的相关信息Data_OutPut( 详细设计3.1 程序中定义的数据类别 调用函数 Data_InPut 创建数组并输 入每个人的编号和密钥 调用函数 Data_OutPut 按特定的次序 让每个人出列,并传递已出列的结点 结束 开始 执行主函数的内 容,开始程序 数据 next 数据 next 数据 next 数据 next 约瑟夫环问题设计与实现 typedefstruct LNode{ ElemType num; //各人的编号 ElemType data; //各人的密码 struct LNode *next; //指向下一个节点的指针 }LNode,*LinkList; 程序中定义了一个节点的结构体,每次新分配一个节点存储,即为新增一个人, data 为人的密码,num是人的编号。

约瑟夫环 实验报告_约瑟夫环设计过程_约瑟夫环事件

3.2 每个变量的过程图解 3.2.1 void main(); 函数原型:void main() 函数源程序: void main() LinkListL=NULL; int m,n=30; //m为报数上限,n 为人的个数 int //常用函数printf("\t 约瑟夫环问题\n\n"); printf("请键入 m的值(要求 m30||ndata);//依次键入每个人的密码 R->num=i+1; //输入每个人的编号 P=(LinkList)malloc(sizeof(LNode)); //创建新节点 P->next=NULL; R->next=P;//连接新的结点 free(P);//释放无用结点 Q->next=L; return //返回循环递归约瑟夫环问题设计与推动 第10 函数功用及实现:先定义结构体指针变量R,P,Q,L,创建一个新结点句柄给指针L,并将 赋值给R,通过 个结点,并录入每个人对应编号,通过scanf 函数录入每个人的密钥,因为构建了一个节点。并将新建立 的结点连到数组尾端,形成一个单链表。最后构建的一个节点是多余的,需要删 除,所以借助 free 函数释放最后一个节点。

之后将单链表的尾指针指向第一个节 点,形成一个单循链表。最后借助return 函数返回循环递归,继续执行主函数。 3.2.3 void Data_OutPut(LinkList &L,int k,int 函数原型:voidData_OutPut(LinkList &L,int k,int 函数原程序:void Data_OutPut(LinkList &L,int k,int printf("\n出列顺序为:\n"); LinkList while(--b)//通过while 循环找到密码做指向的那个人 //加入Q方便寻找出列的人的上一个节点 R=R->next; //指针后移 printf("第%d个出列%d\n",i+1,R->num); //输出所找人的编号 b=R->data; //刷新b 值,将所找到人的密码赋值给b Q->next=R->next; //将出列人的前一个节点和后一个节点连接产生 L=R->next;free(R); //释放已出列结点 约瑟夫环问题设计与推动 第11 函数用途及实现:该变量首先定义了指针变量R,P,Q,L方便对节点的 操作。通过 循环以确认所有人都会被出列,在while 循环中,b 的值最初是 给定的报数上限,通过自减操作找到所要出列的那个人,打印其编号,将其密钥 重新赋值给b,并删除代表该人的结点,并传递该节点,形成一个新的约瑟夫环, 进行下一次循环,最终所有人出列后完成for 循环,打印出列顺序,返回大主函 设计和安装分析4.1 调试中碰到的难题 (1)在用scanf 函数给普通变量输入数据时,在数组名前漏写地址运算符&。

约瑟夫环事件_约瑟夫环 实验报告_约瑟夫环设计过程

如:scanf(″%d%d″, (2)输入数据时的数据方式与规定不符。用scanf 函数输入数据时,必须切记要与scanf 语句中的对应方式匹配。 如:scanf(″%d,%d″,&x, 之间应该有逗号。(3)输入、输出时的数据类别与所用格式说明符不匹配。 例如有以上表明语句: int 则运行时执行语句printf(″x=%c, 2.0下运行) (4)对于复合语句,忘记加花括号。 例如: while(i<=10) 约瑟夫环问题设计与实现第12 printf(″a=%d\n″,a);的上限值是函数定义时元素个数减1。(5)对指针的操作要小心谨慎,比如初始化和赋值等难题值得加以注意。 4.2 经验和感悟 通过现在数据结构课程设计,我体会最深的就是对于循环递归的使用,可以 说对循环链表有了比以往更进一步的了解,以前也是一知半解的,如果只给个题 目自己根本不能把程序完整地编写起来,所以现在课程设计最大的收获就在于对 循环链表有了一定的理解,包括其中的一系列操作,如创建一个循环递归,删除 链表中的一个结点,增加一个结点等。 在现在课程设计过程中应该我们一边设计一边摸索,这这个过程当中我看到 自己在数据结构方面常识把握不够深入,对一些基本概念不能很好的理解,对一 些数据结构不能否熟练的进行上机实现,这是自己比较薄弱的。

学好基础常识是 理论付诸实践的前提,这样理论和实践能够充分地结合出来。在今后的学习中, 我需要尽力纠正,充分利用上机实验的机会提升自己。在程序的输入的之后,因 为自己对屏幕的不熟练,代码又太多很枯燥,常常会造成抛弃的想法,从中我也 感受到只有坚持到底,胜利才能发生。 在调试程序的之后我也是所体会,虽然约瑟夫环问题不是很难,但调试的时 候还是会出现很多出错,因此我们不能认为容易就不仔细对待。在今后的学习中, 要能不断发现疑问,提出困惑,解决难题,从不足之处出发,在不断学习中增加 自己。 用户使用表明(1)根据正确的提醒安装工具。 (2)Intel486 以上系列、AMD K6 以上系列等PC 台式机和电脑都可 运行。 打开该程序平台,根据提示首先输入初始报数上限和约瑟夫环的总数,然后输入各个人的密码,完成输入后,按回车键即可显示约瑟夫环内各人的出列 顺序。 约瑟夫环问题设计与推动 第13 进入平台图标系统提醒输入m 的值,即报数上限,为检测所给数据,将m 的值设为20。 输入约瑟夫环的总数输入数量后,若输入总量小于 30 则提醒输入错误,重新输入,这里为测试所给 约瑟夫环问题设计与推动 第14 输入7人的密码 根据题目所给数据,7 人的密码依次为3,1,7,2,4,8,4,输入完毕后回车。

约瑟夫环设计过程_约瑟夫环事件_约瑟夫环 实验报告

显示结果检测的出列顺序为6约瑟夫环设计过程,1,4,7,2,3,5 符合题目规定,与算得的结果一致,证 明程序正常运行,能够缓解一般的约瑟夫环问题。 约瑟夫环问题设计与推动 第15 [美]KennethA.Reek 语言程序设计教程.北京:机械工业出版社,2000.07 约瑟夫环问题设计与推动 第16 附录源程序清单 /*约瑟夫环问题设计与推动*/ //函数头文件 #include"stdio.h" #include"malloc.h" #include "stdlib.h" //自定义数据类别 typedef int Status; typedef int ElemType; //定义结点结构体 typedef struct LNode{ ElemType num; //各人的编号 ElemType data; //各人的密码 struct LNode *next; //指向下一个节点的指针 }LNode,*LinkList; //函数原型 LinkList Data_InPut(LinkList &L,int voidData_OutPut(LinkList &L,int k,int //主函数void main() LinkListL=NULL; int m,n=30; //m为报数上限,n 为人的个数 int //常用函数printf("\t 约瑟夫环问题\n\n"); printf("请键入 m的值(要求 m30||ndata); //依次键入每个人的密码 R->num=i+1; //输入每个人的编号 P=(LinkList)malloc(sizeof(LNode)); //创建新节点 P->next=NULL; R->next=P;//连接新的结点 free(P);//释放无用结点 Q->next=L; return //调用数据输出变量void Data_OutPut(LinkList &L,int k,int printf("\n出列顺序为:\n"); 约瑟夫环问题设计与实现 第18 while(--b)//通过while 循环找到密码做指向的那个人 //加入Q方便寻找出列的人的上一个节点 R=R->next; //指针后移 printf("第%d个出列为:%d\n",i+1,R->num); //输出所找人的编号 b=R->data; //刷新b 值,将所找到人的密码赋值给b Q->next=R->next; //将出列人的前一个节点和后一个节点连接产生 L=R->next;free(R); //释放已出列结点 多读书的好处书,是了望世界的窗口。

书,是常识的源泉,是人类进步的阶梯。要获得知识,就 必须多读书。要跟上时代演进的脚步,就需要不断读书,不断充实自己。书的内容可以 五花八门,不拘一格。因为我依旧坚信,不管看什么书,只要开卷就有益。我床边的书 常常有几摞,随手可取,内容五花八门。有合适工作应该的书,比如《新华文摘》、《我 是职业秘书》、《社会工作概论》等;有哲学书籍,这几年看了一些当今流行的文学作品, 尤其讨厌反映官场现实的电影;也有热播的电视剧的书,我觉得文字的渲染效果远比演 员的演出更有感染力。还有一些如何与父母沟通的书也有我就会涉足的领域。这六周的 学习时间,我又强化了读书笔记的记录。书越读越多,越读越有兴趣。我觉得多读书至 少有以下四点好处: 一是多读书可以下降知识,提高素质。古人云,“书犹药也,善读之可以医愚。不吃肉 则饥,不读书则愚”。读书能增长知识,开阔眼界;能知道事理,增强素质。我以前只 是把“加强学习”当作一句口号来喊,随着看书多一些后,才真正看到读书的含义。明白 了我们常说的“提高预测问题缓解问题的素质”不是一句空话。同样一件事情,不同的人 会有不同的想法,不同的见解总会造成不同的处理方法。同样的工作,有的人能思路清 晰、有条不紊处理得较好,有的人就不得要领,乱干一气,结果忙了半天没有实效。

约瑟夫环 实验报告_约瑟夫环事件_约瑟夫环设计过程

我 以为,这也有不学习、思想偏激、理解素质低的体现。只有多读书,通古今,晓四方, 提高理解素质,才能恰当分析问题,才能用科学的理论和技巧来解决难题。 二是多读书可以陶冶情操,自信沉稳。我平时会把把空闲时间留给书本,比如利用送 孩子去培训班之后的时间吃饭。最好是找个静静的书屋,可以喝点茶,手捧一本喜欢的 书,坐在靠窗边的凳子上,安安静静地品味书中的味道。这时候,我的心里是忙碌的而 满足的。读书可以让我们拥有“运筹帷幄,决胜千里”的自信。读书可以使人从无知到有 知,从有知到深知;读书可以使人更加理智,不为嘈杂喧嚣的纷扰所干扰,不为一时一 事的取舍而喜忧。通过在笔端书香中感受共鸣和打动,解脱自己心里的抑郁、恐惧、寂 寞、悲哀,使胸中的忧愤释然超脱,达到沉静宁静、自信沉稳的心理和睦状态。 三是多读书可以修身养性,温文尔雅。其实,我讨厌读书也不是天生的。曾经跟一位 大学校长交谈之后的一句话在我心中打下了深深的烙印。他说“一个人读多少书是写在 脸上的”。当时,我对照检查了一下,感觉我身上显然是写着没有多少文墨、很可笑的 样子。我多么希望自己让人看起来是个性优雅,富有书卷气的样子啊。我们明白:第一 印象比较重要。

多读书就可以让人觉得知书答礼,颇有风度。有时候,我们会看到,同 样年龄段的人,大学博士和一般职工总是让人一眼就能判断起来。主要是个性的不同。 这就是我们常说的“腹有诗书气自华”。 四是多读书可以文采飞扬,富有灵感。我们都是机关工作者。能说会写是对我们的基本 要求。这就要求我们要多读书。不读书,写作时就可能无从下笔或言之无物,语言空洞 乏味,没有魅力。“读书破万卷,下笔如有神。”书读得多了,驾驭文字的素养强了,想 要表达的观念才能流畅的抒发出来。我有深刻的感受:当我写一篇文章的之后如果是非 常有感觉一气呵成的文字,别人读起来也比较顺畅。如果是没有感觉东拼西凑硬挤进去 的文字,别人读起来也会觉得晦涩不顺畅。所以,我分辨一篇文章优劣的标准就是能不 能让我读下来。多念书,还能使人在作文的之后,多运用一些书中的好词好句和生活哲 理,让人认为充满文采,美感,增加文章的可读性。 英国首相丘吉尔曾经这样评论读书:“最有益的消遣方式是读书,千千万万的人都能从 丰富多彩的阅读活动中找到精神抚慰。 感谢您的阅读


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-120408-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...