c语言单向循环链表约瑟夫问题

#include"stdio.h"#include"malloc.h"#include"string.h"#include"stdlib.h"structperson{c... #include "stdio.h"
#include "malloc.h"
#include "string.h"
#include "stdlib.h"
struct person
{ char name[20];
int password;
struct person *next;
};
void fun1(struct person *head);
void fun2(struct person *head);
void fun3(struct person *head);
void main()
{ struct person *head,*p,*q;
int i,m,a;
int n=0;
char str[]="exit";
head=NULL;
q=NULL;
for(i=1;;i++)
{ p=(struct person *)malloc(sizeof(struct person));
printf("请输入第%d个人的信息,输入exit结束:\n",i);
printf("人名(<=20个字符):");
scanf("%s",&p->name);
if(m=strcmp(p->name,str)==0) {printf("\n\n");break;};
printf("密码(整数):");
scanf("%d",&p->password);
printf("\n\n");
n++;
p->next =NULL;
if(head==NULL){head=p;q=p;}
else {q->next =p;q=p;}
}
while(1)
{
printf("请选择操作:\n");
printf("==========================\n");
printf("(1)显示信息\n");
printf("(2)重新输入每个人的密码\n");
printf("(3)开始“数N退出”游戏\n");
printf("(0)退出程序\n");
printf("==========================\n");
scanf("%d",&a);
switch(a)
{ case 0:exit(0);
case 1:fun1(head);break;
case 2:fun2(head);break;
case 3:fun3(head,n);break;
}
}
}
void fun1(struct person *head)
{ int x=1;
struct person *p;
p=head;
printf("当前链表信息如下:\n");
printf("==========================\n");
while(p!=NULL)
{ printf("%d:\t%s\t%d\n",x,p->name,p->password);
x++;
p=p->next;
}
printf("==========================\n");
printf("\n\n");
}
void fun2(struct person *head)
{ struct person *p;
p=head;
printf("请重新输入每个人的密码:\n");
printf("==========================\n");
while(p!=NULL)
{ printf("%s:",p->name);
scanf("%d",&p->password);
p=p->next;
}
printf("\n\n");
}
void fun3(struct person *head,int n)
{
int i,j;
int num=0;
struct person *p,*g;
p=head;
g=head;
printf("游戏处理结果:\n");
printf("==========================\n");
for(i=1;i<=n;i++)
{for(j=1;j<=num;j++)
num=p->password;
{
p=p->next;
}
g=p->next;
p->next=g->next;
p=p->next;
num=p->password;
printf("第%d个退出者:%s\n",i,g->name);
free(g);
}
printf("\n\n");
}
为什么我的只能退出一个啊?帮我改改啊!!!!谢谢啊
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
冰是沉默的水3
2013-03-30 · TA获得超过909个赞
知道小有建树答主
回答量:473
采纳率:50%
帮助的人:142万
展开全部
哈哈,我刚写了个约瑟夫环的题,还是关于选学生的,你要不要看看?用的二维数组写的
算法基本都一样,至于你这个,我明天再看了。。。
-物联网校企联盟技术部
更多追问追答
追问
我要用的是链表,你帮我看一下嘛
追答
void fun3(struct person *head,int n)这个函数和上面的说明定义的不一致
void fun3(struct person *head);这是你上面的说明
第二个错:
printf("人名(name);//这里结构体里面定义的是数组,这里就不能要地址符
至于你fun3的算法。。。不知道你想要搞什么。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式