看了好几遍代码感觉逻辑没什么问题??难道是我的链表的什么操作出了问题吗?求大佬解答
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
struct node
{
int data;
node *next;
};
node *p,*head,*r;
int a[100001];
int read()
{
int s=0;
char c=getchar();
while(c>='0'&&c<='9')
{
s=s*10+c-'0';
c=getchar();
}
return s;
}
void del(node *p)
{
node *s;
s=new node;
s=p->next;
p->next=s->next;
free(s);
}
int main()
{
int m,n;
m=read();
n=read();
head=new node;
head->next=NULL;
head->data=1;
r=head;
for(int i=2;i<=m;i++)
{
p=new node;
p->data=i;
p->next=NULL;
r->next=p;
r=p;
}
r->next=head;
r=head;
int sum=n;
while(m>0)
{
if(sum==1)
{
printf(" %d ",r->data);
sum=n;
m--;
del(r);
}
else
{
r=r->next;
sum--;
}
printf("*%d",sum);
}
return 0;
}
输入8 5,输出会变成5 2 8 7 7 4 4 4