- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE # / 4
C语言实现 约瑟夫环问题 ——单向循环链表实现
问题描述:
有n个人围成一圈进行报数游戏,从第一个人开始报到 m的人出圈,接下
来有从下一个人开始,。。。。。。。一次这样往复,直到最后一个人也出圈, 求他们的出圈顺序?(例如8个人,凡报3的人出圈,则他们出圈顺序是 3,
6, 1, ,5, 2, 8, 4,7)
#i ncludestdio.h
#in cludestdlib.h
typedef struct node{ int value;
struct node *n ext;
}NODE;
//*********************
建立循环链表(尾插法建立)***********//
NODE *createli nk(i nt number)
{
NODE *head二NULL,*p二NULL,*q二NULL;
int i=1;
head=(struct node*)malloc(sizeof(struct node)); //*** 建立第一个节点 ***// head-value=i;
p=head;
for(i=2;i=number;i++) //*** 建立剩下的 number-1 节点 ****//
{
q=(struct no de*)malloc(sizeof(struct no de));
if(q==O) retur n 0; p-n ext=q;
p=q;
p-value=i;
}
p-n ext二head; retur n head;
}
//*****************
^建立约瑟夫^环 ********************〃
void jose(NODE *p,i nt nu mber,i nt n)
{
int i,j,g=0;
NODE *q=NULL;
for(i=1;i 二nu mber;i++)
{
for(j=1;j n-1;j++)
{
p=p-n ext;
}
q=p-next; 〃***q 用来记录要删除的节点*****〃
p-next二q-next; //**** 删去 q 节点 ******//
p=p-n ext;
printf(第 %3d 个出圈号是:%3d\n,i,q-value);
free(q);
}
prin tf(\n);
// p- next二NULL; 此表达式不能出现在此处,最后一个节点删除后就不存
在了
-主函^数 *************************〃
int main()
int nu mber=O;
int n=0;
printf(请输入总人数number和出拳编号n:\n);
sea nf(%d,n umber);
sea nf(%d,n);
NODE *head=NULL;
head二createli nk( nu mber);
jose(head ,nu mber, n);
system(PAUSE);
return 1;
您可能关注的文档
最近下载
- 2018伊利甄稀冰淇淋年度公关整合传播执行案【快消零售】【PR】.pdf VIP
- 完整版新时代文明实践PPT专题课件.pptx VIP
- 2023年四川省公需科目(数字经济与驱动发展)考试题库及答案.docx
- 风景园林工程设计文件编制深度规定.doc
- 老旧小区小区改造监理细则.docx
- 青年党员干部党纪学习教育党课:争当党纪学习教育排头兵,严守“六项纪律”,守牢纪律底线.docx VIP
- 2020年湖南省湘潭市中考数学试卷真题(含解析).doc VIP
- 2023年造价工程师《工程计价》考试历年高频考点真题荟萃带答案.docx VIP
- JGJ 39-2016 托儿所、幼儿园建筑设计规范.pdf
- 《面向对象的系统分析与设计》8章-活动图.ppt VIP
文档评论(0)