Susri

doublylinkedlist

Feb 12th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.28 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct Node
  4. {
  5.     int data;
  6.     struct Node *next;
  7.     struct Node *prev;
  8.  
  9. } node;
  10. int main()
  11. {
  12.     node *start,*temp;
  13.     start=(node*)malloc(sizeof(node));
  14.     temp=start;
  15.     temp->next=NULL;
  16.     temp->prev=NULL;
  17.  
  18.  
  19.     printf("1.Insert\n");
  20.     printf("2.Delete\n");
  21.     printf("3.Print\n");
  22.     printf("4.Find\n");
  23.     while(1)
  24.     {
  25.         int query;
  26.         scanf("%d",&query);
  27.         if(query==1)
  28.         {
  29.             int data;
  30.             scanf("%d",&data);
  31.             insert(start,data);
  32.         }
  33.         else if(query==2)
  34.         {
  35.             int data;
  36.             scanf("%d",&data);
  37.             delete_node(start,data);
  38.         }
  39.         else if(query==3)
  40.         {
  41.             printf("The list is ");
  42.             print(start->next);
  43.             printf("\n");
  44.         }
  45.         else if(query == 4)
  46.         {
  47.  
  48.             int data;
  49.  
  50.             scanf("%d",&data);
  51.             int status=find(start,data);
  52.             if(status)
  53.             {
  54.                 printf("Element Found\n");
  55.             }
  56.             else
  57.             {
  58.                 printf("Element Not Found\n");
  59.             }
  60.  
  61.  
  62.  
  63.  
  64.         }
  65.     }
  66.  
  67.  
  68.  
  69.  
  70. }
  71. void insert (node *pointer,int data)
  72. {
  73.     while(pointer->next!=NULL)
  74.     {
  75.         pointer=pointer->next;
  76.     }
  77.     pointer->next=(node*)malloc(sizeof(node));
  78.     (pointer->next)->prev=pointer;
  79.     pointer=pointer->next;
  80.     pointer->data=data;
  81.     pointer->next=NULL;
  82. }
  83.  
  84.  
  85. void delete_node(node *pointer,int data)
  86. {
  87.     while(pointer->next!=NULL && (pointer->next)->data!=data)
  88.     {
  89.         pointer=pointer->next;
  90.  
  91.     }
  92.     if(pointer->next==NULL)
  93.     {
  94.         printf("Element %d is not present in the list\n",data);
  95.         return;
  96.     }
  97.     node *temp;
  98.     temp=pointer->next;
  99.     pointer->next=temp->next;
  100.     temp->prev=pointer;
  101.     free(temp);
  102.  
  103.     return;
  104.  
  105. }
  106. int find(node *pointer,int key)
  107. {
  108.     pointer=pointer->next;
  109.     while(pointer!=NULL)
  110.     {
  111.         if(pointer->data== key)
  112.         {
  113.             return 1;
  114.         }
  115.         pointer=pointer->next;
  116.     }
  117.  
  118.     return 0;
  119. }
  120. void print(node *pointer)
  121. {
  122.     if(pointer==NULL)
  123.     {
  124.         return;
  125.     }
  126.  
  127.     printf("%d",pointer->data);
  128.     print(pointer->next);
  129. }
Advertisement
Add Comment
Please, Sign In to add comment