Niloy007

SolutionB

Feb 24th, 2020
128
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. struct node {
  5.     int data;
  6.     struct node *prev;
  7.     struct node *next;
  8. };
  9. typedef struct node Node;
  10.  
  11. Node *head = new Node();
  12.  
  13. void insert(Node *head, int value) {
  14.     Node *temp, *last, *flag;
  15.  
  16.     if (head->next == NULL) {
  17.         temp = new Node();
  18.         temp->data = value;
  19.         temp->next = NULL;
  20.         temp->prev = head;
  21.         head->next = temp;
  22.         head->prev = NULL;
  23.     } else if (value <= head->next->data) {
  24.         last = head;
  25.         flag = head->next;
  26.         temp = new Node();
  27.         temp->data = value;
  28.         temp->prev = last;
  29.         temp->next = flag;
  30.         last->next = temp;
  31.         flag->prev = temp;
  32.     } else {
  33.         last = head;
  34.         while ((last->next != NULL) && (last->next->data < value)) {
  35.             last = last->next;
  36.         }
  37.         temp = new Node();
  38.         temp->data = value;
  39.         temp->next = last->next;
  40.         temp->prev = last;
  41.         last->next = temp;
  42.     }
  43. }
  44.  
  45. void search(Node *head, int value) {
  46.     Node *temp;
  47.     temp = head;
  48.     int found = 0;
  49.  
  50.     while (temp->next != NULL) {
  51.         if (temp->next->data == value) {
  52.             found = 1;
  53.             break;
  54.         }
  55.         temp = temp->next;
  56.     }
  57.     if (found == 1)
  58.         cout << "Found!\n";
  59.     else
  60.         cout << "Not Found!\n";
  61. }
  62.  
  63. void deleteItem(Node *head, int value) {
  64.     Node *temp = head;
  65.     Node *last = head;
  66.     if (temp->next->data == value) {
  67.         head->next = temp->next->next;
  68.         delete (temp->next);
  69.     } else {
  70.         temp = head->next;
  71.         while (temp->data != value) {
  72.             last = temp;
  73.             temp = temp->next;
  74.         }
  75.         if(temp->next == NULL) {
  76.             last->next = temp->next;
  77.             delete (temp);
  78.         } else {
  79.             last->next = temp->next;
  80.             temp->next->prev = last;
  81.             delete (temp);
  82.         }
  83.  
  84.     }
  85. }
  86.  
  87. void length(Node *head) {
  88.     Node *temp;
  89.     temp = head;
  90.     int len = 0;
  91.  
  92.     while (temp->next != NULL) {
  93.         len++;
  94.         temp = temp->next;
  95.     }
  96.     cout << "Length = " << len << "\n";
  97. }
  98.  
  99.  
  100. void display(Node *head) {
  101.     Node *temp;
  102.     temp = head;
  103.  
  104.     while (temp->next != NULL) {
  105.         cout << temp->next->data << " ";
  106.         temp = temp->next;
  107.     }
  108.     cout << "\n";
  109. }
  110.  
  111. void showMenu() {
  112.     printf("1. Insert\n2. Show all\n3. Search\n4. Delete\n5. Length\n6. Exit\n");
  113. }
  114.  
  115. int main() {
  116.     int i = 1;
  117.     do {
  118.         showMenu();
  119.         int n;
  120.         cin >> n;
  121.         if (n == 1) {
  122.             int item;
  123.             printf("Enter Data:\n");
  124.             cin >> item;
  125.             insert(head, item);
  126.         } else if (n == 2) {
  127.             display(head);
  128.         } else if (n == 3) {
  129.             int value;
  130.             printf("Enter the number you want to search:\n");
  131.             cin >> value;
  132.             search(head, value);
  133.         } else if (n == 4) {
  134.             int item;
  135.             printf("Enter the number you want to delete:\n");
  136.             cin >> item;
  137.             deleteItem(head, item);
  138.         } else if (n == 5) {
  139.             length(head);
  140.         } else
  141.             i = 0;
  142.     } while (i);
  143. }
RAW Paste Data