约瑟夫环.docx
- 文档编号:3513775
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:8
- 大小:131.53KB
约瑟夫环.docx
《约瑟夫环.docx》由会员分享,可在线阅读,更多相关《约瑟夫环.docx(8页珍藏版)》请在冰豆网上搜索。
约瑟夫环
《数据结构》
课程设计报告
课程名称:
《数据结构》课程设计
课程设计题目:
约瑟夫环
姓名:
汪吉
院系:
计算机学院
专业:
计算机科学与技术
年级:
大二
学号:
13055127
指导教师:
王立波
2014年10月20日
目录
1课程设计的目的………………………………………………………………x
2需求分析………………………………………………………………………x
3课程设计报告内容……………………………………………………………x
1、概要设计……………………………………………………………………x
2、测试结果……………………………………………………………………x
4小结…………………………………………………………………………x
5程序清单………………………………………………………………………x
6参考文献………………………………………………………………x
1、课程设计的目的
(1)熟练使用C++语言编写程序,解决实际问题;
(2)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
(3)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
(4)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
2、需求分析
1、要求:
(1):
利用单项循环链表模拟过程。
(2)链表中不包含头结点。
2、任务
(一):
设置一个储存结点信息的结构体。
(二):
输入链表的长度n,以及初始密码m。
(三):
建立只有tail指针且不带头结点,长度是n的循环链表。
(四):
进行数据处理,初始密码为m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。
报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。
3、测试数据
n=5,m=1数据为12345。
出队顺序为12435
n=7,m=5数据为7654321出队顺序为3754261
n=7,m=20数据为7654321出队顺序为2754316
3、课程设计报告内容
概要设计
(1)首先设计了一个结构体储存结点的信息定义如下
typedefstructNode
{
intindex;//编号
intpassword;//密码
structNode*next;
}Node;
(2)初始化长度为N的单向循环链表,返回我们的尾结点指针
Node*CreatList(intn);
(3)开始游戏的操作,让一个个的人出列
voidJposeh(Node*&tail,intpassword,intnumber);
测试结果:
4、小结
一、这次课程设计的心得体会通过实践我的收获如下:
1、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。
2、培养了我选用参考书,查阅手册及文献资料的能力。
培养独立思考,深入研究,分析问题、解决问题的能力。
3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
二、验收以及开始过程遇到的问题
1.考虑问题不够全面,对于特殊的情况没有考虑周全,关于我们的约瑟夫环,对于头结点的删除的问题没有考虑到,没有考虑到这种特殊的情况。
2.特殊的情况的分析,做的不是很充分,考虑没到要点上去分析问题。
5、程序清单:
#include"stdafx.h"
#include
#include"stdafx.h"
#include
typedefstructNode
{intindex;
intpassword;
structNode*next;
}Node;
Node*CreatList(intn)
//创建一个含n个人的循环链表
{
inti;intpassword;
Node*head,*tail;
head=tail=(Node*)malloc(sizeof(Node));
for(i=1;i { tail->index=i; printf("*请输入第%d号所带密码: ",i); scanf("%d",&password); tail->password=password; tail->next=(Node*)malloc(sizeof(Node)); tail=tail->next; } tail->index=i; printf("*请输入第%d号所带密码: ",i); scanf("%d",&password); tail->password=password; tail->next=head; //returnhead; returntail; } voidJposeh(Node*&tail,intpassword,intnumber) { inti,j; Node*head=tail->next; for(i=1;tail! =head;i++) { for(j=1;j { tail=head; head=head->next; } tail->next=head->next; printf("\n第%d个出局的人的编号是: %d密码是: %d",i,head->index,head->password); password=head->password; free(head); head=tail->next; } printf("\n第%d个出局的人的编号是: %d密码是: %d",i,tail->index,tail->password); free(tail); } int_tmain(intargc,_TCHAR*argv[]) { intnumbers,Password; charstop; //Node*head; Node*tail; printf("*******************************\n"); printf("*约瑟夫环问题*\n"); printf("*输入人数和起始密码: *\n"); printf("*jsut720*\n"); printf("*******************************\n"); do { printf("输入约瑟夫环问题的人数和起始密码: \n"); scanf("%d%d",&numbers,&Password); //head=CreatList(numbers); tail=CreatList(numbers); printf("*******************************\n"); printf("*输出结果如下*\n"); printf("*******************************\n"); //Jposeh(head,Password); Jposeh(tail,Password,numbers); printf("\n*******************************\n"); printf("*是否继续进行是Y(y)否N(n)*\n"); printf("*******************************\n"); getchar(); scanf("%c",&stop); getchar(); }while(stop=='y'||stop=='Y'); return0; } 6、参考文献 [1]严蔚敏吴伟民编著数据结构C语言版
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 约瑟夫