#include<stdio.h>
#include<malloc.h>
typedef struct node{
int data;
struct node* next,*prior;
}*linklist,node;
void createlist(linklist &l,int n){
linklist r=l;
l->data=1;
for(int i=2;i<=n;i++){
linklist p=(linklist)malloc(sizeof(node));
p->prior=r;
p->next=l;
p->data=i;
l->prior=p;
r->next=p;
r=p;
}
}
void deletelinklist(linklist &l,linklist &p,int m,int k,int n){
for(int j=1;j<=n;j++){
if(j%2!=0){
for(int i=1;i<m;i++){
p=p->prior;
}
printf("%d ",p->data);
free(p);
}
else{
for(int j=1;j<k;j++){
p=p->next;
}
printf("%d ",p->data);
free(p);
}
}
}
int main(){
linklist l=(linklist)malloc(sizeof(node));
int n,m,k;
scanf("%d %d %d",&n,&m,&k);
createlist(l,n);
linklist p=l;
deletelinklist(l,p,m,k,n);
return 0;
}
想问一下之所以只能输出第1个数是因为P被释放了,可是我想用p继续执行该怎么办?