#include #include struct node{ int info; struct node *link; }; void display(struct node *start); struct node *addatbeg(struct node *start, int num); void addatend(struct node *start, int num); struct node *del(struct node *start, int num); void search(struct node *start, int num2); main() { struct node *start=NULL; int choice, num, num2; while(1) { printf("n1. Displayn"); printf("2. Add node to empty list / Add at beginningn"); printf("3. Add node at the endn"); printf("4. Delete from listn"); printf("5. Exitnn"); scanf("%d",&choice); switch(choice) { case 1: display(start); break; case 2: printf("Enter the number to be insertedn"); scanf("%d",&num); start = addatbeg(start, num); break; case 3: printf("Enter the number to be insertedn"); scanf("%d",&num); addatend(start, num); break; case 4: printf("Enter the number to be deletedn"); scanf("%d",&num); start=del(start, num); break; case 5: exit(1); default: printf("Invalid Input"); } } } void display(struct node *start) { struct node *p; if(start==NULL) { printf("nList is emptyn"); return; } p=start; printf("List is : n"); while(p != NULL) { printf("%d ", p->info); p=p->link; } } struct node *addatbeg(struct node *start, int num) { struct node *temp; temp=(struct node *)malloc(sizeof(struct node)); temp->info=num; temp->link = start; start = temp; return start; } void addatend(struct node *start, int num) { struct node *temp, *p; temp=(struct node *)malloc(sizeof(struct node)); temp->info=num; p=start; while(p->link!=NULL) { p = p->link; } p->link = temp; temp->link = NULL; } struct node *del(struct node *start,int num) { struct node *tmp,*p; if(start==NULL) { printf("List is emptyn"); return start; } if(start->info==num) /*deletion from first or only node*/ { tmp=start; start=start->link; free(tmp); return start; } p=start; while(p->link!=NULL) { if(p->link->info==num) { tmp = p->link; p->link = tmp->link; free(tmp); return start; } p=p->link; } printf("%d not presentn",num); return start; }