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 display()
- {
- list = head;
- while(list != NULL)
- {
- printf("%s\n",list -> name);
- printf("%d\n",list -> roll);
- list = list -> next;
- }
- }
- 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;
- }
- }
- 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;
- }
- return;
- }
- void delete_by_pos(int n)
- {
- int i;
- list = head;
- if(n==1)
- {
- head = list -> next;
- head -> pre = NULL;
- free(list);
- display();
- return;
- }
- else
- {
- for(i=0; i<n-1; i++)
- {
- list = list -> next;
- }
- data *temp = list -> pre;
- temp -> next = list -> next;
- free(list);
- display();
- return;
- }
- }
- void delete_by_valu(int n)
- {
- list = head;
- while(list -> next != NULL)
- {
- if(head -> pre == NULL && list -> roll == n)
- {
- head = list -> next;
- head -> pre = NULL;
- free(list);
- display();
- return;
- }
- else if(list -> roll == n)
- {
- data *temp = list -> pre;
- data *temp1 = list -> next;
- temp -> next = list -> next;
- temp1 -> pre = temp;
- free(list);
- display();
- return;
- }
- list = list -> next;
- }
- data *temp1 = list -> pre;
- temp1 -> next = NULL;
- free(list);
- display();
- 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;
- display();
- 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;
- display();
- }
- 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;
- display();
- return;
- }
- 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;
- display();
- return;
- }
- main()
- {
- int n,i,m,x,y,z,k,t;
- 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;
- }
- }
- printf("............................\n");
- display();
- printf("............................\n");
- printf("Enter your search position: ");
- scanf("%d",&m);
- if(m>n)
- {
- printf("Invalid position\n");
- }
- else
- {
- search_by_position(m);
- }
- printf("...........................\n");
- printf("Enter your search value: ");
- scanf("%d",&x);
- if(x>n)
- {
- printf("Invalid position\n");
- }
- else
- {
- search_by_value(x);
- }
- printf("...........................\n");
- printf("Enter your delete position: ");
- scanf("%d",&y);
- if(y>n)
- {
- printf("Invalid position\n");
- }
- else
- {
- delete_by_pos(y);
- }
- printf("...........................\n");
- printf("Enter your delete value: ");
- scanf("%d",&z);
- if(z>n)
- {
- printf("Invalid value\n");
- }
- else
- {
- delete_by_valu(z);
- }
- printf("...........................\n");
- printf("Enter your value for add node: ");
- scanf("%d",&t);
- insert_at_nth(t);
- insert_at_last();
- insert_at_fast();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement