问题遇到的现象和发生背景
N个人围成一圈顺序编号,从1号开始按1、2、3顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。 请按退出顺序输出每个退出人的原序号。
输入格式:
输入只有一行,包括一个整数N(1<=N<=3000)及一个整数p(1<=p<=5000)。
输出格式:
按退出顺序输出每个退出人的原序号,数据间以一个空格分隔,但行尾无空格。
问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}node;
int kong(node *l)
{
if(l->next=l) return 0;
else return 1;
}
node *tou(){
node l;
l=(node)malloc(sizeof(node));
l->next=l;
return l;
}
void Creatlist(node *l,int n){
node *q;
q=l;
for(int i=1;i<=n;i++)
{
node *p;
p=(node*)malloc(sizeof(node));
p->data=i;
p->next=l;
q->next=p;
q=q->next;
}
}
void yuesefu(node *l,int p)
{
node *m;
m=l->next;
int a=1;
while(kong(l)){
if(a==p){
printf("%d\n",m->data);
node *n;
n=m;
m=m->next;
free(n);
a=0;
}
else
{a++;m=m->next;}
}
}
int main()
{
int n,p;
scanf("%d%d",&n,&p);
node *l;
l=tou();
Creatlist(l,n);
yuesefu(l,p);
return 0;
}
运行结果及报错内容
我的解答思路和尝试过的方法
这是我写的代码,没有编辑错误,但是没有输出,这是怎么回事?希望各位不吝赐教