当前位置:首页 » 编程语言 » c语言约瑟夫问题

c语言约瑟夫问题

发布时间: 2025-09-20 05:01:52

‘壹’ 约瑟夫问题c语言实现代码

测试结果:

总人数n=9,报数m=2.
2->4->6->8->1->5->9->7->3


#include<stdio.h>
#include<stdlib.h>

typedefstructnode
{
intdata;
structnode*next;
}node;

typedefnode*Linklist;

//原代码voidCreatLinklist(Linklist*L,intn)
LinklistCreatLinklist(Linklist*L,intn)
{
Linklistp,s;
*L=(Linklist)malloc(sizeof(node));
(*L)->next=NULL;
inti=1;
p=*L;//增加这个语句,让p指向当前结点
if(n!=0)
{
//原代码while(i<=41)
while(i<=n)
{
s=(Linklist)malloc(sizeof(node));
s->data=i++;
p->next=s;
p=s;
}
s->next=(*L)->next;//将笑卖链表循环起来;
}
free(*L);//释放头结点;
returns->next;//返回第一个结点的值;
}

intmain()
{
intn=41;//9
intm=3;//2
inti;
LinklistL;

printf("总人数n=%d,报数m=%d. ",n,m);

//原代码Linklist*p=CreatLinklist(Linklist*L,intn);
Linklistp=CreatLinklist(&L,n);
Linklisttemp;

早升笑m%=n;
while(p!=p->next)
{
for(i=1;i<m-1;i++)
{
陆含p=p->next;
}
printf("%d->",p->next->data);
temp=p->next;
p->next=temp->next;
free(temp);
p=p->next;
}
printf("%d",p->data);
return0;
}

‘贰’ C语言,编了一个程序解决约瑟夫环问题(数组模拟1代表有人,0代表走了)下面的代码对吗

#include<stdio.h>
#defineN10
intmain()
{
inta[N];
inti,people=N,n=0;
for(i=0;i<N;i++)
a[i]=1;
i=0;
while(people>0)
{
if(a[i]==1)//非0的才统计
n++;
if(n==3)
{
a[i]=0;
people--;
printf("第%d个人离开 ",i+1);
n=0;
}
i++;
if(i==N)
i=0;
}
return0;
}

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:581
制作脚本网站 发布:2025-10-20 08:17:34 浏览:875
python中的init方法 发布:2025-10-20 08:17:33 浏览:570
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:756
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:672
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:999
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:242
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:102
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:794
python股票数据获取 发布:2025-10-20 07:39:44 浏览:700