- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计报告题目一:题目:题目一: 一、问题描述:
约瑟夫问题的一种描述是:编号为1,2···,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将它的密码作为新的m值,从它的顺时针方向的下一个人开始重新从1报数,如此下去,直至全部人出列为止。最后按照出列的顺序印出各人的编号。
二、typedef struct Node
{
int data; //存储人数
int password; //存储的每人所对应的密码
struct Node *next;
}Node, *LinkList;
三、大致的程序流程:
1. 函数之间的调用关系图PersonNumber FirstValue CreatLinkList InitLinkList OutputOrder printResult
Password
2.主要模块的流程主程序void CreatLinkList(LinkList *L)
{/*构建单链表*/
(*L) = (LinkList)malloc(sizeof(Node));
if ((*L) == NULL)
{
printf(memory allocation failed);
exit(1);
}
}
void InitLinkList(LinkList *L, int personNumber)
{/*初始化单链表*/
Node *p, *q;
int i ;
p = (*L);
p-data = 1;
p-password = Password();
for (i = 2; i = personNumber; i++)
{
q = (LinkList)malloc(sizeof(Node));
if (q == NULL)
{
printf(memory allocation failed);
exit(1);
}
q-password = Password();
q-data = i;
p-next = q;
p = q;
}
p-next = (*L);
}
B)以下三个函数的作用分别是确定输入人数,确定每人密码,确定开始的上限制。他们都是通过库函数scanf()来接受用户输入的数据,并且数据类行为整型(int)。其中用户输入的人数必须在0~MAXPERSONNUMBER之间,密码必须在0~MAXPASSWORDVALUE之间 ,开始查找的上限值必须在0~MAXFIRSTVALUE之间。如果用户输入数值大于上限值或小于0,则返回重新输入。此过程是通过while()函数实现的。如果while运行说明输入数据不合要求,重新输入。
/*确定需要处理的人数*/
int PersonNumber()
{
int personNumber;
printf(请输入需要输入人的数目:);
scanf(%d,personNumber);
while (personNumber MAXPERSONNUMBER || personNumber 0)
{
printf(\n你输入的数字无效,请输入在0到%d的整数,MAXPERSONNUMBER);
scanf(%d,personNumber);
}
printf(最终确定的人数为%d\n,personNumber);
return personNumber;
}
/*给每个人赋密码*/
int Password()
{
int password;
static int count = 1;
printf(\n请输入第%d的密码:,count);
scanf(%d,password);
while (password MAXPASSWORDVALUE || password 0)
{
printf(您输入的数字无效,请输入在0到%d的整数:,MAXPASSWORDVALUE);
scanf(%d,password);
}
printf(第%d个人的密码为%d,count,password);
count++;
return password;
}
/*确定开始的上限值*/
int FirstValue()
{
int firstValue;
printf(请输入初始的上限值);
scanf(%d,firstValue);
while (firstValue MAXFIRSTVALUE || firstValue 0)
{
printf(\n你输入的数字无效,请输入
您可能关注的文档
- 数字图像处理演示系统(课程设计).doc
- 温度控制系统的经典控制研究[毕业设计,精品论文].doc
- 小波变换处理图像((课程设计)).doc
- 小风扇设计-单片机.doc
- 校园规划设计(美术环艺专业毕业论文).doc
- 在校园网中建立WLAN的研究(网络工程论文).doc
- 中学校园网的搭建与实施--计算机科学与技术专业毕业设计论文.doc
- 纯C语言开发-毕业论文(电子相册)[毕业设计,精品论文].doc
- JAVA课程设计 时钟的设计实现[毕业设计,精品论文].doc
- java课程设计-图书管理系统[毕业设计,精品论文].doc
- 2024年中国钽材市场调查研究报告.docx
- 2024年中国不锈钢清洗车市场调查研究报告.docx
- 2024年中国分类垃圾箱市场调查研究报告.docx
- 2024年中国水气电磁阀市场调查研究报告.docx
- 2024年中国绿藻片市场调查研究报告.docx
- 2010-2023历年初中毕业升学考试(青海西宁卷)数学(带解析).docx
- 2010-2023历年福建厦门高一下学期质量检测地理卷.docx
- 2010-2023历年初中数学单元提优测试卷公式法(带解析).docx
- 2010-2023历年初中毕业升学考试(山东德州卷)化学(带解析).docx
- 2010-2023历年初中毕业升学考试(四川省泸州卷)化学(带解析).docx
文档评论(0)