当前位置:首页 » 编程语言 » 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;
}

热点内容
党政网是什么服务器 发布:2025-09-20 07:33:35 浏览:3
网易邮箱上传插件 发布:2025-09-20 07:21:09 浏览:227
在哪里看自己设置的qq密码 发布:2025-09-20 07:18:54 浏览:327
lg电视密码如何解锁 发布:2025-09-20 06:51:34 浏览:866
电信宽带代理服务器地址 发布:2025-09-20 06:26:31 浏览:324
外地服务器ip怎么备案 发布:2025-09-20 06:21:40 浏览:307
php查看进程 发布:2025-09-20 06:18:51 浏览:653
unity如何打包到安卓端 发布:2025-09-20 06:18:04 浏览:603
ppp拨号脚本 发布:2025-09-20 06:18:04 浏览:742
我的世界bug摧毁服务器 发布:2025-09-20 06:16:06 浏览:502