求用c语言编写约瑟夫环的程序

求用c语言编写约瑟夫环的程序,第1张

#include<stdio.h>

struct

list//建立一个结构体,包括每个人的编号,密码和下一级的指针

{

int

id

int

code

struct

list

*next

}

typedef

struct

list

list//把结构体用list表示

list*

input(int

n)//链表的初始化

{

list

*p,*q,*l

int

i,m

p=new

list

l=new

list

l->next=NULL

p=l

p->id=1//第一个人的初始化

scanf("%d",&m)

p->code=m

for(i=2i<=ni++)//第二个人到第num个人的初始化

{

q=new

list

q->id=i

scanf("%d",&m)

q->code=m

q->next=NULL

p->next=q

p=q

}

p->next=l//使表尾指向表头,成循环链表

return

p

}

int

main()

{

int

num,m1,i

list

*q,*p

while(scanf("%d",&num)!=EOF)

{

printf("第一次的密码为:")

scanf("%d",&m1)

p=input(num)

//printf("%4d\n",head->id)

printf("出队的顺序为:")

while(p->next!=p)

{

for(i=1i<=m1i++)

{

q=p

p=p->next

//printf("--\n",p->id)

}

m1=p->code

printf("%4d",p->id)

q->next=p->next

delete

p

p=q

}

printf("%4d",p->id)

delete

p

printf("\n")

}

}

已经修改好了。上次调试程序调试的不仔细,这次应该没问题了,如果有的话再跟我联系。

#include <stdio.h>

#define S() sizeof(struct quene)

typedef struct quene

{ int n

struct quene *next

} QUE

QUE * fun1(int n)

int fun2(QUE *p)

int main()

{ int m,i,n,j,s

QUE *p,*p2

printf("n=")

scanf("%d",&n)

printf("m=")

scanf("%d",&m)

printf("i=")

scanf("%d",&i)

p=fun1(n)

for(j=1j<ip=p->next,j++)

j=1p2=p

while((p->next)!=p)

{ p=p->next

if(++j==m)

{ j=1p=p->next

s=fun2(p2)

printf("%d ",s)

}

p2=p

}

printf("%d\n",p->n)

}

QUE * fun1(int n)

{ QUE *head,*p1,*p2

int i

for(i=1i<=ni++)

{ p1=(QUE *)malloc(S())

if(i==1) head=p1

else p2->next=p1

p1->n=i

p2=p1

}

p1->next=head

return head

}

int fun2(QUE *p)

{ QUE *p2

int n

p2=p->next

n=p2->n

p->next=p2->next

free(p2)

return n

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11313659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存