typedef struct dList{ struct dList *flink; struct dList *blink; int val; } *dListe; dListe delete(dListe entry) { dListe elem; elem=entry; if(elem!=NULL){ entry=elem->flink; if(entry!=NULL) entry->blink=NULL; free(elem); } return entry; } dListe add(dListe entry, int val) { dListe elem; elem=malloc(sizeof(struct dList)); elem->val=val; if (entry==NULL){ elem->flink=NULL; elem->blink=NULL; } else { elem->flink=entry; elem->blink=NULL; entry->blink=elem; } entry=elem; return entry; } void print(dListe x) { dListe ptr; for (ptr= x; ptr!= NULL; ptr=ptr->flink) { printf("%d -> ", ptr->val); } printf("\n"); } main() { init(); dListe x; x=NULL; while(any){ x=add(x,any); } printf("Original doubly linked list \n"); print(x); printf("Delete head \n"); x=delete(x); print(x); }