Advertisement
Md_Touhid

Doubly Linked List

Jan 22nd, 2016
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.87 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int flag=1;
  5.  
  6. typedef struct Node
  7. {
  8.     int data;
  9.     struct Node *next;
  10.     struct Node *prev;
  11. } node;
  12.  
  13. void insert(node *pointer, int data)
  14. {
  15.  
  16.     while(pointer->next!=NULL)
  17.     {
  18.         pointer = pointer -> next;
  19.     }
  20.  
  21.     pointer->next = (node *)malloc(sizeof(node));
  22.     (pointer->next)->prev = pointer;
  23.     pointer = pointer->next;
  24.     pointer->data = data;
  25.     pointer->next = NULL;
  26.  
  27.     printf("\n    Data successfully inserted...");
  28. }
  29.  
  30. void find(node *pointer, int data)
  31. {
  32.     pointer =  pointer -> next;
  33.  
  34.     while(pointer != NULL && flag != 0)
  35.     {
  36.         if(pointer->data == data)
  37.         {
  38.             flag = 0;
  39.         }
  40.  
  41.         else
  42.         {
  43.             pointer = pointer -> next;
  44.             flag = 1;
  45.         }
  46.     }
  47. }
  48.  
  49. void update(node *pointer, int data)
  50. {
  51.     int new_data;
  52.     printf("\n    Enter new data : ");
  53.     scanf("%d", &new_data);
  54.  
  55.     pointer =  pointer -> next;
  56.  
  57.     while(pointer != NULL)
  58.     {
  59.         if(pointer->data == data)
  60.         {
  61.             pointer->data = new_data;
  62.             printf("\n    Data update successful...");
  63.         }
  64.  
  65.         pointer = pointer -> next;
  66.     }
  67.  
  68.     return;
  69. }
  70.  
  71. void delete(node *pointer, int data)
  72. {
  73.  
  74.     while(pointer->next!=NULL && (pointer->next)->data != data)
  75.     {
  76.         pointer = pointer -> next;
  77.     }
  78.  
  79.     if(pointer->next==NULL)
  80.     {
  81.         printf("\n    '%d' is not present in the list!\n", data);
  82.         return;
  83.     }
  84.  
  85.     node *temp;
  86.     temp = pointer -> next;
  87.     pointer->next = temp->next;
  88.     temp->prev =  pointer;
  89.  
  90.     free(temp);
  91.  
  92.     printf("\n    Data successfully deleted...");
  93.  
  94.     return;
  95. }
  96. void print(node *pointer)
  97. {
  98.     if(pointer==NULL && flag == 1)
  99.     {
  100.         printf("\n    The list is empty!");
  101.     }
  102.     if(pointer == NULL)
  103.     {
  104.         return;
  105.     }
  106.     else
  107.     {
  108.         flag = 0;
  109.         printf("%d ",pointer->data);
  110.         print(pointer->next);
  111.     }
  112.  
  113.     flag = 1;
  114. }
  115.  
  116. int main(void)
  117. {
  118.  
  119.     node *start,*temp;
  120.     start = (node *)malloc(sizeof(node));
  121.     temp = start;
  122.     temp -> next = NULL;
  123.     temp -> prev = NULL;
  124.  
  125.     printf("1. Insert\n2. Delete\n3. Print\n4. Find\n5. Update\n6. Terminate this program");
  126.  
  127.     while(flag!=0)
  128.     {
  129.         int query;
  130.         printf("\n\nEnter your choice : ");
  131.         scanf("%d", &query);
  132.  
  133.         if(query == 1)
  134.         {
  135.             int data;
  136.             printf("\n    Enter your data : ");
  137.             scanf("%d", &data);
  138.  
  139.             insert(start, data);
  140.         }
  141.  
  142.         else if(query == 2)
  143.         {
  144.             int data;
  145.             printf("\n    Enter the data that you want to delete : ");
  146.             scanf("%d",&data);
  147.  
  148.             delete(start, data);
  149.         }
  150.  
  151.         else if(query == 3)
  152.         {
  153.             printf("\n    List : ");
  154.             print(start->next);
  155.         }
  156.  
  157.         else if(query == 4)
  158.         {
  159.             int data;
  160.             printf("\n    Enter the data that you want to find : ");
  161.             scanf("%d",&data);
  162.  
  163.             find(start, data);
  164.  
  165.             if(flag == 0)
  166.             {
  167.                 printf("\n    Found...");
  168.             }
  169.             else
  170.             {
  171.                 printf("\n    Data is not in the list!");
  172.  
  173.             }
  174.             flag = 1;
  175.         }
  176.  
  177.         else if(query == 5)
  178.         {
  179.             int data;
  180.             printf("\n    Enter the data you want to update : ");
  181.             scanf("%d",&data);
  182.  
  183.             find(start, data);
  184.  
  185.             if(flag == 0)
  186.             {
  187.                 printf("\n    Found...");
  188.                 update(start, data);
  189.             }
  190.  
  191.             else
  192.             {
  193.                 printf("\n    Data is not in the list!");
  194.             }
  195.  
  196.             flag = 1;
  197.         }
  198.  
  199.         else flag = 0;
  200.     }
  201.  
  202.     printf("\n\nProgram terminated!\n\n");
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement