Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct std_info
- {
- char name[50];
- int roll;
- struct std_info *pre;
- struct std_info *next;
- } data;
- data *head = NULL;
- data *list = NULL;
- void insert_at_fast()
- {
- data *q = (data*)malloc(sizeof(data));
- printf("Enter your name: ");
- scanf(" %[^\n]s",q -> name);
- printf("Enter your roll: ");
- scanf("%d",&q -> roll);
- q -> pre = NULL;
- q -> next = NULL;
- list = head;
- list -> pre = q;
- q -> next = list;
- head = q;
- menu();
- return;
- }
- void insert_at_last()
- {
- data *q = (data*)malloc(sizeof(data));
- printf("Enter your name: ");
- scanf(" %[^\n]s",q -> name);
- printf("Enter your roll: ");
- scanf("%d",&q -> roll);
- q -> pre = NULL;
- q -> next = NULL;
- list = head;
- while(list -> next != NULL)
- {
- list = list -> next;
- }
- list -> next = q;
- q -> pre = list;
- q -> next = NULL;
- menu();
- return;
- }
- void insert_at_nth(int n)
- {
- data *p = (data*)malloc(sizeof(data));
- printf("Enter your name: ");
- scanf(" %[^\n]s",p -> name);
- printf("Enter your name: ");
- scanf("%d",&p -> roll);
- p -> pre = NULL;
- p -> next = NULL;
- list = head;
- if(n == 1)
- {
- p -> next = list;
- list -> pre = p;
- head = p;
- menu();
- return;
- }
- else
- {
- int i;
- for(i=0; i<n-1; i++)
- {
- list = list -> next;
- }
- data *temp = list -> pre;
- temp -> next = p;
- p -> pre = temp;
- p -> next = list;
- list -> pre = p;
- menu();
- }
- return;
- }
- void delete_by_value(int n)
- {
- list = head;
- while(list -> next != NULL)
- {
- if(head -> pre == NULL && list -> roll == n)
- {
- head = list -> next;
- head -> pre = NULL;
- free(list);
- menu();
- return;
- }
- else if(list -> roll == n)
- {
- data *temp = list -> pre;
- data *temp1 = list -> next;
- temp -> next = list -> next;
- temp1 -> pre = temp;
- free(list);
- menu();
- return;
- }
- list = list -> next;
- }
- data *temp1 = list -> pre;
- temp1 -> next = NULL;
- free(list);
- display();
- return;
- }
- void delete_by_pos(int n)
- {
- int i;
- list = head;
- if(n==1)
- {
- head = list -> next;
- head -> pre = NULL;
- free(list);
- menu();
- return;
- }
- else
- {
- for(i=0; i<n-1; i++)
- {
- list = list -> next;
- }
- data *temp = list -> pre;
- temp -> next = list -> next;
- list->next->pre = temp->next;
- free(list);
- menu();
- return;
- }
- }
- void search_by_position(int m)
- {
- int i;
- list = head;
- if(m==0)
- {
- printf("%s\n",list -> name);
- printf("%d\n",list -> roll);
- return;
- }
- else
- {
- for(i=0; i<m-1; i++)
- {
- list = list -> next;
- }
- printf("%s\n",list -> name);
- printf("%d\n",list -> roll);
- return;
- }
- menu();
- }
- void search_by_value(int x)
- {
- list = head;
- while(list != NULL)
- {
- if(list -> roll == x)
- {
- printf("%s\n",list -> name);
- printf("%d\n",list -> roll);
- }
- list = list -> next;
- }
- menu();
- return;
- }
- void display()
- {
- list = head;
- while(list != NULL)
- {
- printf("%s\n",list -> name);
- printf("%d\n",list -> roll);
- list = list -> next;
- }
- }
- int menu()
- {
- int m;
- printf("\n1.Insert at first\n");
- printf("2.insert_at_last\n");
- printf("3.insert_at_nth\n");
- printf("4.delete_by_value\n");
- printf("5.search_by_value\n");
- printf("6.search_by_position\n");
- printf("7.display\n");
- printf("8.Exit\n");
- scanf("%d",&m);
- switch(m)
- {
- case 1:
- {
- insert_at_fast();
- break;
- }
- case 2:
- {
- insert_at_last();
- break;
- }
- case 3:
- {
- int x;
- scanf("%d" ,&x);
- insert_at_nth(x);
- break;
- }
- case 4:
- {
- int y;
- printf("Enter the value you want to delete : ");
- scanf("%d",&y);
- delete_by_value(y);
- break;
- }
- case 5:
- {
- int z;
- printf("Enter the value : ");
- scanf("%d",&z);
- search_by_value(z);
- }
- case 6:
- {
- int r;
- printf("Enter position : ");
- scanf("%d",&r);
- search_by_position(r);
- }
- case 7:
- {
- display();
- }
- case 8:
- {
- exit(0);
- break;
- }
- default:
- {
- printf("You Choose Wrong Option!!\a\nPlease choose a Correct Option\n");
- menu();
- }
- }
- }
- int main()
- {
- int n,i;
- printf("Enter your node amount: ");
- scanf("%d",&n);
- for(i=0; i<n; i++)
- {
- data *N = (data*)malloc(sizeof(data));
- printf("Enter name: ");
- scanf(" %[^\n]s",N -> name);
- printf("Enter roll: ");
- scanf("%d",&N -> roll);
- N -> pre = NULL;
- N -> next = NULL;
- if(head == NULL)
- {
- head = N;
- list = head;
- }
- else
- {
- list -> next = N;
- N -> pre = list;
- list = N;
- }
- }
- menu();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement