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;
}
熱點內容
