Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct data
- {
- int a;
- char ch[20];
- struct data *next,*prev;
- } data;
- data *head=NULL,*tail=NULL;
- int main()
- {
- printf("__________Doubly Linked List__________\n");
- menu();
- return 0;
- }
- void menu()
- {
- printf("\n1. Add\n");
- printf("2. Search\n");
- printf("3. Delete\n");
- printf("4. Display\n");
- printf("5. Exit\n");
- printf("Choose any option : ");
- int a;
- scanf("%d",&a);
- switch(a)
- {
- case 1:
- {
- add();
- break;
- }
- case 2:
- {
- search();
- break;
- }
- case 3:
- {
- Delete();
- break;
- }
- case 4:
- {
- display();
- break;
- }
- case 5:
- {
- exit(0);
- break;
- }
- default:
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
- void insert_at_first()
- {
- data *N=(data*)malloc(sizeof(data));
- printf("\nEnter Student Name : ");
- scanf(" %[^\n]",N->ch);
- printf("Enter Semester : ");
- scanf(" %d",&N->a);
- N->next=NULL;
- N->prev=NULL;
- if(head==NULL && tail==NULL)
- {
- head=N;
- tail=N;
- }
- else
- {
- head->prev=N;
- N->next=head;
- head=N;
- }
- printf("\n1. Menu\n");
- printf("2. Exit\n");
- printf("Choose any option : ");
- int b;
- scanf("%d",&b);
- switch(b)
- {
- case 1:
- {
- menu();
- break;
- }
- case 2:
- {
- exit(0);
- break;
- }
- default:
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
- void insert_at_end()
- {
- data *N=(data*)malloc(sizeof(data));
- printf("\nEnter Student Name : ");
- scanf(" %[^\n]",N->ch);
- printf("Enter Semester : ");
- scanf(" %d",&N->a);
- N->next=NULL;
- N->prev=NULL;
- data *list=head;
- if(head==NULL && tail==NULL)
- {
- head=N;
- tail=N;
- }
- else
- {
- tail->next=N;
- N->prev=tail;
- tail=N;
- }
- printf("\n1. Menu\n");
- printf("2. Exit\n");
- printf("Choose any option : ");
- int c;
- scanf("%d",&c);
- switch(c)
- {
- case 1:
- {
- menu();
- break;
- }
- case 2:
- {
- exit(0);
- break;
- }
- default:
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
- void insert_at_nth()
- {
- int p;
- data *list=head;
- data *N=(data*)malloc(sizeof(data));
- printf("\nEnter Student Name : ");
- scanf(" %[^\n]",N->ch);
- printf("Enter Semester : ");
- scanf(" %d",&N->a);
- N->next=NULL;
- N->prev=NULL;
- printf("Enter Nth Position : ");
- scanf(" %d",&p);
- if(p==1 )
- {
- if(head==NULL)
- {
- head=N;
- tail=N;
- }
- else
- {
- head->prev=N;
- N->next=head;
- head=N;
- }
- }
- else
- {
- p=p-2;
- while(p!=0 && list->next!=NULL)
- {
- list=list->next;
- p--;
- }
- if(list->next==NULL)
- {
- N->prev=tail;
- tail->next=N;
- tail=N;
- }
- else
- {
- list->next->prev=N;
- N->next=list->next;
- N->prev=list;
- list->next=N;
- }
- }
- printf("\n1. Menu\n");
- printf("2. Exit\n");
- printf("Choose any option : ");
- int d;
- scanf("%d",&d);
- switch(d)
- {
- case 1:
- {
- menu();
- break;
- }
- case 2:
- {
- exit(0);
- break;
- }
- default:
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
- void add()
- {
- printf("\n1. Add at frist\n");
- printf("2. Add at end\n");
- printf("3. Add by position\n");
- printf("4. Exit\n");
- printf("Choose any option : ");
- int e;
- scanf("%d",&e);
- switch(e)
- {
- case 1:
- {
- insert_at_first();
- break;
- }
- case 2:
- {
- insert_at_end();
- break;
- }
- case 3:
- {
- insert_at_nth();
- break;
- }
- case 4:
- {
- exit(0);
- break;
- }
- default :
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
- void search_by_pos()
- {
- data *list=head;
- int p;
- printf("\nEnter Nth Position : ");
- scanf("%d",&p);
- if(p==1)
- {
- printf("\nName : %s\n",list->ch);
- printf("Semester : %d\n\n",list->a);
- }
- else
- {
- p=p-2;
- while(p!=0 && list->next!=NULL)
- {
- list=list->next;
- p--;
- }
- if(list->next==NULL)
- {
- printf("\nNo Information Available!\n");
- }
- else
- {
- printf("\nName : %s\n",list->next->ch);
- printf("Semester : %d\n",list->next->a);
- }
- }
- printf("\n1. Menu\n");
- printf("2. Exit\n");
- printf("Choose any option : ");
- int f;
- scanf("%d",&f);
- switch(f)
- {
- case 1:
- {
- menu();
- break;
- }
- case 2:
- {
- exit(0);
- break;
- }
- default :
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
- void search_by_value()
- {
- data *list=head;
- int n;
- printf("\nEnter Semester : ");
- scanf("%d",&n);
- if(list->a==n)
- {
- printf("\nName : %s\n",list->ch);
- printf("Semester : %d\n\n",list->a);
- }
- else
- {
- while(list->a!=n)
- {
- list=list->next;
- if(list==NULL)
- {
- printf("\nNo Information Available!\n");
- break;
- }
- }
- printf("\nName : %s\n",list->ch);
- printf("Semester : %d\n",list->a);
- }
- printf("\n1. Menu\n");
- printf("2. Exit\n");
- printf("Choose a option : ");
- int g;
- scanf("%d",&g);
- switch(g)
- {
- case 1:
- {
- menu();
- break;
- }
- case 2:
- {
- exit(0);
- break;
- }
- default :
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
- void search()
- {
- printf("\n1. Search by Position\n");
- printf("2. Search by Value\n");
- printf("Choose any option : ");
- int h;
- scanf("%d",&h);
- switch(h)
- {
- case 1:
- {
- search_by_pos();
- break;
- }
- case 2:
- {
- search_by_value();
- break;
- }
- case 3:
- {
- exit(0);
- break;
- }
- default :
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
- void delete_by_pos()
- {
- int p;
- data *list=head,*temp;
- printf("\nEnter Nth Position : ");
- scanf(" %d",&p);
- if(head==NULL)
- {
- printf("\nNo Information Available!\n");
- }
- else if(p==1)
- {
- if(list->next==NULL)
- {
- printf("\nDELETED!\n");
- free(list);
- }
- else
- {
- head=list->next;
- head->prev=NULL;
- printf("\nDELETED!\n");
- free(list);
- }
- }
- else
- {
- p=p-2;
- while(p!=0 && list->next!=NULL)
- {
- list=list->next;
- p--;
- if(list==NULL)
- {
- printf("\nNo Information Available!\n");
- break;
- }
- }
- if(list->next==NULL)
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- }
- else if(list->next->next==NULL && p==0)
- {
- temp=tail;
- tail=tail->prev;
- tail->next=NULL;
- printf("\nDELETED!\n");
- free(temp);
- }
- else if(list->next->next!=NULL && p==0)
- {
- temp=list->next;
- temp->next->prev=list;
- list->next=temp->next;
- printf("\nDELETED!\n");
- free(temp);
- }
- }
- printf("\n1. Menu\n");
- printf("2. Exit\n");
- printf("Choose any option : ");
- int i;
- scanf("%d",&i);
- switch(i)
- {
- case 1:
- {
- menu();
- break;
- }
- case 2:
- {
- exit(0);
- break;
- }
- default :
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
- void delete_by_value()
- {
- int x;
- printf("\nEnter Semester : ");
- scanf(" %d",&x);
- data *list=head;
- if(head==NULL)
- {
- printf("\nNo Information Available!\n");
- }
- else if(list->a==x)
- {
- if(list->next==NULL)
- {
- head=NULL;
- tail=NULL;
- printf("\nDELETED!\n");
- free(list);
- }
- else
- {
- list->next->prev=NULL;
- head=list->next;
- printf("\nDELETED!\n");
- free(list);
- }
- }
- else
- {
- data *temp;
- while(list->a!=x && list->next!=NULL)
- {
- list=list->next;
- if(list==NULL)
- {
- printf("\nNo Information Available!\n");
- break;
- }
- }
- if(list->a==x && list->next==NULL)
- {
- list=tail;
- temp=list;
- temp->prev->next=temp->next;
- tail=temp->prev;
- printf("\nDELETED!\n");
- free(temp);
- }
- else if(list->a==x && list->next!=NULL)
- {
- temp=list;
- temp->prev->next=temp->next;
- temp->next->prev=temp->prev;
- temp->next=NULL;
- temp->prev=NULL;
- printf("\nDELETED!\n");
- free(temp);
- }
- }
- printf("\n1. Menu\n");
- printf("2. Exit\n");
- printf("Choose a option : ");
- int j;
- scanf("%d",&j);
- switch(j)
- {
- case 1:
- {
- menu();
- break;
- }
- case 2:
- {
- exit(0);
- break;
- }
- default :
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
- void Delete()
- {
- printf("\n1. Delete by Position\n");
- printf("2. Delete by Value\n");
- printf("Choose a option : ");
- int k;
- scanf("%d",&k);
- switch(k)
- {
- case 1:
- {
- delete_by_pos();
- break;
- }
- case 2:
- {
- delete_by_value();
- break;
- }
- case 3:
- {
- exit(0);
- break;
- }
- default :
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
- void display_first()
- {
- data *list=head;
- if(head==NULL)
- {
- printf("\nNo Information Available!\n");
- }
- else
- {
- while(list!=NULL)
- {
- printf("\nName : %s\n",list->ch);
- printf("Semester : %d\n\n",list->a);
- list=list->next;
- }
- }
- printf("\n1. Menu\n");
- printf("2. Exit\n");
- printf("Choose a option : ");
- int l;
- scanf("%d",&l);
- switch(l)
- {
- case 1:
- {
- menu();
- break;
- }
- case 2:
- {
- exit(0);
- break;
- }
- default :
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
- void display_last()
- {
- data *list=tail;
- if(head==NULL)
- {
- printf("\nNo Information Available!\n");
- }
- else
- {
- while(list!=NULL)
- {
- printf("\nName : %s\n",list->ch);
- printf("Semester : %d\n\n",list->a);
- list=list->prev;
- }
- }
- printf("\n1. Menu\n");
- printf("2. Exit\n");
- printf("Choose a option : ");
- int m;
- scanf("%d",&m);
- switch(m)
- {
- case 1:
- {
- menu();
- break;
- }
- case 2:
- {
- exit(0);
- break;
- }
- default:
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
- void display()
- {
- printf("\n1. Display first to last\n");
- printf("2. Display last to first\n");
- printf("Choose a option : ");
- int n;
- scanf("%d",&n);
- switch(n)
- {
- case 1:
- {
- display_first();
- break;
- }
- case 2:
- {
- display_last();
- break;
- }
- default:
- {
- printf("\nPLEASE ENTER A VALID OPTION!\n");
- menu();
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement