#include <stdio.h>
#include <stdlib.h>
#define N 7
typedef struct list
{ int data;
struct list *next;
} SLIST;
SLIST *creatlist(int a[])
{ SLIST *h,*p,*q; int i;
p=h=(SLIST *)malloc(sizeof(SLIST));
h->data=a[0];
for(i=1; i<N; i++)
{ if((q=(SLIST*)malloc(sizeof(SLIST)))==NULL) exit(1);
q->data=a[i]; p->next=q; p=q;
}
p->next=h;
return h;
}
void outlist(SLIST *h)
{ SLIST *p;
p=h;
{ printf("\nHead\n");
do
{ printf("->%d",p->data);
p=p->next;
}
while(p!=h);
printf("->End\n");
}
}
int ListDelete(SLIST **head,int i)
{SLIST *p,*q;
intj=1,h;
p=q=*head;
if(p==p->next)return(p->data);
if(i==1)
{while(q->next!=p)
q=q->next;
}
else{
while(j!=i)
{ q=p;
p=p->next;
j++;
}
}
q->next=p->next;
*head=p->next;
h=p->data;
free(p);
return(h);
}
main()
{ SLIST *heads;
SLIST **head=&heads;
int x=0,z;
int a[N]={1,2,3,4,5,6,7};
int b[N+1]={20,3,1,7,2,4,8,4};
heads=creatlist(a);
outlist(*head);
printf("kill->\n");
for(z=0;z<N;z++)
{ x=ListDelete(head,b[x]);
//outlist(*head);
printf("--->%d",x);
printf("\n");
}
}