Advertisement
NB52053

Nadui_LAB5

Nov 5th, 2016
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.93 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. //#include <string.h>
  4.  
  5. struct node
  6. {
  7.     int value;
  8.     struct node *next;
  9.     struct node *prev;
  10. };
  11.  
  12. struct node *head = NULL, *tail = NULL;
  13. void insertfirst(int x);
  14. void insertlast(int x);
  15. void print();
  16. int search(int x);
  17. void remove(int x);
  18. int length();
  19.  
  20. int main()
  21. {
  22.     while (1)
  23.     {
  24.         printf(" ...MENU...\n");
  25.         printf("(1) Insert First\n");
  26.         printf("(2) Insert Last\n");
  27.         printf("(3) Show All\n");
  28.         printf("(4) Search\n");
  29.         printf("(5) Remove\n");
  30.         printf("(6) Length\n");
  31.         printf("(8) Exit\n");
  32.         printf("------------\n");
  33.         printf("Enter Your Choice:");
  34.         int choice;
  35.         scanf("%d", &choice);
  36.         //system("cls");
  37.         int x;
  38.         switch (choice)
  39.         {
  40.         case 1:
  41.             printf("Enter Number: ");
  42.             scanf("%d", &x);
  43.             insertfirst(x);
  44.             print();
  45.             break;
  46.         case 2:
  47.             printf("Enter Number: ");
  48.             scanf("%d", &x);
  49.             insertlast(x);
  50.             print();
  51.             break;
  52.         case 3:
  53.             print();
  54.             break;
  55.         case 4:
  56.             printf("Search value : ");
  57.             scanf("%d", &x);
  58.             if (search(x))
  59.                 printf("Found\n");
  60.             else
  61.                 printf("Not Found\n");
  62.             break;
  63.         case 5:
  64.             printf("Which value you want to remove : ");
  65.             scanf("%d", &x);
  66.             remove(x);
  67.             print();
  68.             break;
  69.         case 6:
  70.             printf("length = %d\n", length());
  71.             break;
  72.         case 8:
  73.             exit(0);
  74.         }
  75.  
  76.     }
  77. }
  78. void insertfirst(int x)
  79. {
  80.     node *temp = (node*)malloc(sizeof(node));
  81.     if (head == NULL)
  82.     {
  83.         temp->prev = NULL;
  84.         temp->value = x;
  85.         temp->next = NULL;
  86.         head = temp;
  87.         tail = head;
  88.     }
  89.     else
  90.     {
  91.         temp->prev = NULL;
  92.         temp->value = x;
  93.         temp->next = head;
  94.         head->prev = temp;
  95.         head = temp;
  96.     }
  97. }
  98. void print()
  99. {
  100.     node *currentnode = head;
  101.     printf("\nYour List is: ");
  102.     while (currentnode != NULL)
  103.     {
  104.         printf("%d ", currentnode->value);
  105.         currentnode = currentnode->next;
  106.     }
  107.     printf("\n\n\n");
  108.  
  109. }
  110. void insertlast(int x)
  111. {
  112.     node *temp = (node*)malloc(sizeof(node));
  113.     if (head == NULL)
  114.     {
  115.         temp->prev = NULL;
  116.         temp->value = x;
  117.         temp->next = NULL;
  118.         head = temp;
  119.         tail = temp;
  120.     }
  121.     else
  122.     {
  123.         temp->prev = tail;
  124.         temp->value = x;
  125.         temp->next = NULL;
  126.         tail->next = temp;
  127.         tail = temp;
  128.     }
  129. }
  130. int search(int x)
  131. {
  132.     node *currentnode = head;
  133.     while (currentnode != NULL)
  134.     {
  135.         if (currentnode->value == x)
  136.             return 1;
  137.         currentnode = currentnode->next;
  138.     }
  139.     return 0;
  140. }
  141. int length()
  142. {
  143.     int l = 0;
  144.     node *currentnode = head;
  145.     while (currentnode != NULL)
  146.     {
  147.         l++;
  148.         currentnode = currentnode->next;
  149.     }
  150.     return l;
  151. }
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.     void remove(int x){
  159.  
  160.     node *temp=head, *prev = NULL, *currentnode =NULL;
  161.  
  162.         while (temp->value != x){
  163.  
  164.             temp = temp->next;
  165.         }
  166.  
  167.         if (temp->prev == NULL){
  168.  
  169.         head = head->next;
  170.         free(temp);
  171.         head->prev = NULL;
  172.  
  173.         }
  174.  
  175.         else if (temp->next == NULL){
  176.  
  177.         currentnode = temp->prev;
  178.         free(temp);
  179.         currentnode->next = NULL;
  180.  
  181.  
  182.         }
  183.  
  184.         else {
  185.  
  186.         temp->prev->next = temp->next;
  187.         temp->next->prev = temp->prev;
  188.         free(temp);
  189.  
  190.         }
  191.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement