#include<stdio.h>
#include<malloc.h>
#define size sizeof(link)
#define null 0
typedef struct link
{
int num;
struct link *pre;
struct link *next;
}link;
link *current = null;
link *q = null;
link *head = null;
int main()
{
int n,m,p,i,count;
scanf("%d %d %d",&n,&m,&p);
for(i=1;i<=n;i++)
{
q = (link*)malloc(size);
q->num = i;
if(i==p)
{
head = q;
}
if(current == null)
{
current = q;
current->next = q;
current->pre = q;
}
else
{
q->next = current->next;
current->next->pre = q;
current->next = q;
q->pre = current;
current = q;
}
}
count = m-1;
for(i=0;i<n;i++)
{
while(count--)
{
head=head->next;
}
printf("%d ",head->num);
head->pre->next=head->next;
head->next->pre=head->pre;
count = m;
}
return 0;
}
一开始打算用循环做的,结果删除的时候卡了...
换成双向循环之后,感觉到了世界的美丽。