版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE23*******************实践教学*******************兰州理工大学软件职业技术学院2011年春季学期算法与数据结构课程设计题目:约瑟夫环专业班级:姓名:学号:指导教师:成绩:摘要约瑟夫环问题是典型的线性表的应用实例,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库.而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我们使用MICROSOFT公司的MicrosoftVisualC++6.0开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。关键词:单循环链表;c语言;约瑟夫环;序言数据结构是研究数据元素之间的逻辑关系的一门课程,以及数据元素及其关系在计算机中的存储表示和对这些数据所施加的运算.该课程设计的目的是通过课程设计的综合训练,培养分析和编程等实际动手能力,系统掌握数据结构这门课程的主要内容。本次课程设计的内容是用单循环链表模拟约瑟夫环问题,循环链表是一种首尾相接链表,其特点是无须增加存储容量,仅对表的链接方式稍作改变,使表处理更加灵活,约瑟夫环问题就是用单循环链表处理的一个实际应用。通过这个设计实例,了解单链表和单循环链表的相同与不同之处,进一步加深对链表结构类型及链表操作的理解.通过该课程设计,能运用所学知识,能上机解决一些实际问题,了解并初步掌握设计、实现较大程序的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。目录TOC\o”1—3”\h\z\uHYPERLINK\l”_Toc298072296”摘要PAGEREF_Toc298072296\h1HYPERLINK\l”_Toc298072297”序言PAGEREF_Toc298072297\h2HYPERLINK\l”_Toc298072298”目录PAGEREF_Toc298072298\h3HYPERLINK\l”_Toc298072299”正文PAGEREF_Toc298072299\h4HYPERLINK\l"_Toc298072300"一、问题描述PAGEREF_Toc298072300\h4HYPERLINK\l”_Toc298072301"二、逻辑设计PAGEREF_Toc298072301\h5HYPERLINK\l”_Toc298072302”三、详细设计PAGEREF_Toc298072302\h7HYPERLINK\l”_Toc298072303”四、程序代码PAGEREF_Toc298072303\h13HYPERLINK\l”_Toc298072304"五、程序调试与测试PAGEREF_Toc298072304\h13HYPERLINK\l”_Toc298072305”设计总结PAGEREF_Toc298072305\h18HYPERLINK\l”_Toc298072306"参考文献PAGEREF_Toc298072306\h19HYPERLINK\l”_Toc298072307"致谢PAGEREF_Toc298072307\h20HYPERLINK[2]按要求求解约瑟夫环\n”); printf(”[0]退出\n");ﻩprintf("**************************欢迎使用!****************************\n");}四、程序代码见附录源程序.五、程序调试与测试1.调用模块时,结点结构的调用与其他模块产生冲突,导致每一行都出现两次错误,加入子函数的声明后错误消失.2.刚开始时曾忽略了一些变量参数的标识”&"和“*”,使调试程序时费时不少。今后应重视确定参数的变量和赋值属性的区分和标识。3.本次课程设计采用数据抽象的程序设计方法,将程序划分为三个层次结构:元素节点、单向循环链表,主控制模块.思路较为清晰,实现调用顺利。经过本次实验,使我对数据结构这门课程有了进一步的了解,每一个程序经过需求分析、概要设计、详细设计之后,思路即清晰呈现,程序也很快就出来了,最后经过调试、运行又有新的体验。<测试用例>这是一个使用循环链表的经典问题。本程序开始运行界面如下:图7约瑟夫环开始运行界面图7约瑟夫环开始运行界面选择1进入约瑟夫环问题阐述.图8约瑟夫环问题阐述图8约瑟夫环问题阐述①选择2,输入下列数据测试:请输入总人数n:7请输入开始上限数m:20;请依次输入每个人的密码:3172484出队顺序:6147235图9约瑟夫环测试1图9约瑟夫环测试1②继续选择2,输入下列数据测试:请输入总人数n:5请输入开始上限数m:30请依次输入每个人的密码:34567出队顺序:53124图10约瑟夫环测试2图10约瑟夫环测试2③继续选择2,输入下列数据测试:请输入总人数n:8请输入开始上限数m:14请依次输入每个人的密码:345678910出队顺序:67283514图11约瑟夫环测试3图11约瑟夫环测试3测试完成,选择0退出。设计总结我的这次数据结构课程设计的题目是:《约瑟夫环》,通过对该题目的设计,我加深了对数据结构及存储结构的理解,进一步地理解和掌握了课本中所学的各种数据结构,尤其是对单循环链表上基本运算的实现,学会了如何把学到的知识用于解决实际问题,锻炼了自己动手的能力.通过这次数据结构课程设计,我感受最深的就是对于循环链表的使用,可以说对循环链表有了比以前更进一步的认识,以前只是一知半解的,如果只给个题目自己根本不能把程序完整地编写出来,所以这次课程设计最大的收获就在于对循环链表有了一定的理解,包括其中的一系列操作,如建立一个循环链表,删除链表中的一个结点,增加一个结点等。在调试程序的时候我也有所体会,虽然约瑟夫环问题不是很难,但调试的时候还是会出现很多错误,因此我们不能认为容易就不认真对待。在以后的学习中,要能不断发现问题,提出问题,解决问题,从不足之处出发,在不断学习中提高自己.两周的课程设计很短暂,但其间的内容是很充实的,在其中我学习到了很多平时书本中无法学到的东西,积累了经验,锻炼了自己分析问题,解决问题的能力,并学会了如何将所学的各课知识融会,组织起来进行学习,总而言之这两周中我学到很多,受益匪浅。参考文献1.严蔚敏,吴伟民。《数据结构(C语言版)》.清华大学出版社.2.严蔚敏,吴伟民.《数据结构题集(C语言版)》。清华大学出版社。3.《DATASTRUCTUREWITHC++》.WilliamFord,WilliamTopp.清华大学出版社(影印版).4.谭浩强.《c语言程序设计》.清华大学出版社.致谢这次的课程设计,我们两人一个小组去完成我们自己的课程,但是还是得到了来自很多方面的帮助。在此首先要感谢学院提供给我这次实践的机会,让我们有机会贴近现实,感受成功的喜悦;其次要感谢实验机房的老师提供优良的实验设备供我们做课设,正是这种良好的课设环境让我们整个课设过程心情都非常愉快.再次要感谢指导老师们的辛勤指导,每当我们遇到疑难问题时,是他们一次次不厌其烦的解释和悉心的指导,我们才能闯过一个个难关,到达胜利的彼岸,是他们给我们提供了一次宝贵的检验自己机会.最后也要感谢同学们的帮助,有了他们的支持使我遇到任何困难都不是一个人在战斗.感谢所有在我课程设计过程中帮助过我的人!附录源代码:#include<stdio。h〉//输入输出函数头文件#include<stdlib.h>//字符串转短整形函数的头文件10140219//typedefstructLNode//定义单循环链表中节点的结构{ intnum;//编号ﻩintpwd;//passwordﻩstructLNode*next;//指向下一结点的指针}LNode;/*构造结点*/LNode*createNode(intm_num,intm_pwd){ LNode*p;ﻩp=(LNode*)malloc(sizeof(LNode));//生成一个结点 p—〉num=m_num;//把实参赋给相应的数据域ﻩp->pwd=m_pwd; p-〉next=NULL;//指针域为空ﻩreturnp;}/**创建循环链表**/voidcreateList(LNode**ppHead,intn){/*创建单向循环链表ppHead,人数个数为n,并输入每个人的密码值,若建立失败则生成头结点,让cur指向他,若建立成功则插入结点P,cur指向的数据元素为p,后续为”空"的节点,再把P插入循环链表ppHead中*/ inti,m_pwd;ﻩLNode*p,*cur;//cur:浮标指针 for(i=1;i〈=n;i++)ﻩ{ printf(”输入第%d个人的密码:",i); scanf(”%d”,&m_pwd);//输入持有密码 ﻩp=createNode(i,m_pwd);//调用构造结点函数ﻩ if(*ppHead==NULL)//如果头结点为空ﻩﻩ{ﻩﻩﻩ*ppHead=cur=p;//生成头结点,让cur指向他ﻩﻩ cur—〉next=*ppHead;//cur的指针域指向自身 }ﻩﻩelse//如果不为空,则插入结点 ﻩ{ ﻩp—〉next=cur—〉next; ﻩcur—〉next=p;ﻩ cur=p;//cur指向新插入结点ﻩﻩﻩ}ﻩ} printf(”完成创建!\n");//提示链表创建完成}/*出队处理*/voidjose(LNode*ppHead,intm_pwd){/*p指向要删除节点的前一个节点,ppHead指向要删除的节点,使p=ppHead,ppHead再指向要删除节点的下一个节点,使p和ppHead链接,输出p指向节点的编号和密码值,释放ppHead,如此循环,直至把所有节点都打印和删除为止!*/ﻩinti,j; LNode*p,*p_del;//定义指针变量 for(i=1;p!=ppHead;i++){ ﻩfor(j=1;j<m_pwd;++j){ﻩﻩ p=ppHead;//p赋值为ppHead,p指向要删除结点的前一个结点ﻩﻩﻩppHead=ppHead—>next;//ppHead指向下一个元素 ﻩ} p-〉next=ppHead—〉next;//p结点与头结点链接ﻩ i=ppHead—〉pwd;//i赋值为ppHead—〉pwd j=ppHead—〉num;//j赋值为ppHead-〉num,j为要删除的密码值 ﻩprintf(”第%d个人出列,密码:%d\n”,j,i);ﻩﻩm_pwd=ppHead—〉pwd;//m_pwd赋值为ppHead-〉pwd ﻩfree(ppHead);//释放头结点 ﻩppHead=p—〉next;//ppHead重新赋值给p-〉next,即释放前的ppHead—>pwd指针//删除报数结点 } i=ppHead-〉pwd;//i赋值为ppHead-〉pwdﻩj=ppHead—〉num;//j赋值为ppHead-〉num printf("最后一个出列是%d号,密码是:%d\n",j,i); free(ppHead);//释放头结点}voidinstruction(){printf("****************************************************************\n”);printf(”约瑟夫环:\n");printf(”编号为1,2,3,4…,n的n个人按顺时针方向围坐一圈,每人持有一个密\n");printf(”码(正整数).一开始任选一个正整数作为报数的上限值m,从第一个人开始\n");printf(”按顺时针方向自1开始顺序报数,报到时停止.报m的人出列,将他的密码\n”);printf(”m作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,\n”);printf(”直到所有人全部出列为止。编程打印出列顺序.\n”);printf("******************************************************\n");return0;}voidmenu(){ printf(”**************************约瑟夫环*****************************\n”); printf(”\n");ﻩprintf(”[1]约瑟夫环问题的阐述\n”);ﻩprintf(”[2]按要求求解约瑟夫环\n"); printf(”[0]退出\n");ﻩprintf(”**************************欢迎使用!****************************\n”);}/*主函数模块*/intmain(){ﻩintn,m,x;ﻩLNode*ppHead=NULL; menu(); for(;;){ printf(”\n请选择要执行的操作:”); scanf("%d”,&x);ﻩsystem(”cls”);ﻩswitch(x){case1:ﻩ printf("****************************************************************\n”);printf("约瑟夫环:\n");printf(”编号为1,2,3,4…,n的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026黑龙江鹤岗市兴山区招聘公益性岗位人员30人考试备考题库及答案解析
- 2026上海市社会主义学院公开招聘专职教师笔试模拟试题及答案解析
- 2026年烟台科技学院招聘(273人)笔试模拟试题及答案解析
- 2026年阜阳市界首市中医院公开招聘专业技术人员考试备考题库及答案解析
- 2026湖南长沙市雨花湘一外国语中学春季合同制教师招聘考试参考题库及答案解析
- 2026年甘肃兰州铁路技师学院高校毕业生招聘考试备考试题及答案解析
- 2026年宠物行为训练与健康管理培训
- 2026中国国际商会新疆商会人员招聘20人考试参考题库及答案解析
- 2026江苏南京大学化学学院科研人员招聘笔试备考题库及答案解析
- 2026曲靖市事业单位公开招聘工作人员(889人)考试备考题库及答案解析
- 重庆市2026年高一(上)期末联合检测(康德卷)化学+答案
- 2026年湖南郴州市百福控股集团有限公司招聘9人备考考试题库及答案解析
- 【四年级】【数学】【秋季上】期末家长会:数海引航爱伴成长【课件】
- 2025年中国船舶集团有限公司招聘笔试参考题库含答案解析
- 办公楼物业服务的品质提升策略
- 养殖场土地租赁合同
- JBT 8200-2024 煤矿防爆特殊型电源装置用铅酸蓄电池(正式版)
- (正式版)SHT 3078-2024 立式圆筒形料仓工程设计规范
- 计算机就业能力展示
- 设备维修团队的协作与沟通
- 华为三支柱运作之HRBP实践分享概要课件
评论
0/150
提交评论