#include"alloc.h" #include"stdio.h" struct x { int data; struct x *link; }; typedef struct x node; node *start; void main() { node *x; int ch; x=(node*)malloc(sizeof(node)); start=x; clrscr(); printf("Enter data:"); scanf("%d",&x->data); x->link=NULL; do { x=start; clrscr(); display(start); printf("\n\nEnter your choice:\n1. Insert First\n2. Insert Last\n3. Insert Between\n4. Delete First\n5. Delete Last\n6. Delete Between\n7. Delete All\n8. Exit\n"); scanf("%d",&ch); if(ch==1) get(x); if(ch==2) getrev(x); if(ch==3) getmid(x); if(ch==4) delfirst(x); if(ch==5) dellast(x); if(ch==6) delmid(x); if(ch==7) delall(x); if(ch>8||ch<1) {printf("\n\tInvalid Choice\n\tEnter again....");getch();} } while(ch!=8); } /* E N D O F M A I N P R O G R A M*/ get(node *z) { node *new; new=(node*)malloc(sizeof(node)); printf("Enter data:"); scanf("%d",&new->data); new->link=z; start=new; return; } getrev(node *a) { node *st,*prv; while(a) { prv=a; a=a->link; } prv->link=(node*)malloc(sizeof(node)); prv=prv->link; printf("Enter data:"); scanf("%d",&prv->data); prv->link=NULL; return; } getmid(node *m) { int x=1,n; node *new,*prv; new=(node*)malloc(sizeof(node)); printf("Enter data:"); scanf("%d",&new->data); printf("Enter the location:"); scanf("%d",&n); while(n>x) { prv=m; m=m->link; x++; } prv->link=new; new->link=m; return; } delfirst(node *f) { node *prv=f; if(f==NULL) { printf("\nNode not found"); getch(); return; } start=f->link; free(prv); return; } dellast(node *l) { node *prv; if(l==NULL) { printf("\nNode not found"); getch(); return; } while(l->link) { prv=l; l=l->link; } prv->link=NULL; free(l); return; } delmid(node *m) { node *prv,*prv1; int n,x=1; printf("Enter the location:"); scanf("%d",&n); while(xlink; x++; } prv=m; m=m->link; prv1->link=m; free(prv); return; } delall(node *a) { node *prv; if(a==NULL) { printf("\nNode not found"); getch(); return; } while(a) { prv=a; a=a->link; free(prv); } start=NULL; return; } display(node* p) { while(p) { printf("\n%d",p->data); p=p->link; } return; }