typedef struct List{ struct List *next; int val; }* Liste; Liste delete(Liste entry) { Liste elem; if(entry!=NULL){ elem=entry->next; if(elem==entry) { free(elem); entry=NULL; } else { while(elem->next!=entry) { elem=elem->next; } elem->next=entry->next; free(entry); entry=elem; } } return entry; } Liste add(Liste entry, int val) { Liste elem; elem=malloc(sizeof(struct List)); elem->val=val; if (entry==NULL){ elem->next=elem; } else { elem->next=entry->next; entry->next=elem; } return elem; } void print(Liste x) { Liste ptr; if(x!=NULL) { printf("%d -> ", x->val); ptr=x->next; for (; ptr!= x; ptr=ptr->next) { printf("%d -> ", ptr->val); } } printf("\n"); } int main() { init(); Liste y; y=NULL; while(any){ y=add(y,any); } printf("adding a random number in a cyclic list \n"); print(y); printf("deleting head \n"); y=delete(y); print(y); }