Advertisement
KAR98S

OperationsOnLinkedList

Sep 3rd, 2018 (edited)
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.30 KB | None | 0 0
  1. #include<iostream>
  2. #include<conio.h>
  3.  
  4. using namespace std;
  5.  
  6. struct NODE {
  7.  
  8.     int data;
  9.     NODE *next;
  10. };
  11.  
  12. NODE *head = NULL;
  13.  
  14. int run();
  15. void insBeg();
  16. void insMid();
  17. void insEnd();
  18.  
  19. void delBeg();
  20. void delMid();
  21. void delEnd();
  22.  
  23. void dispList();
  24.  
  25. int main() {
  26.  
  27.     while (run());
  28.  
  29.     return 0;
  30. }
  31.  
  32. int run() {
  33.  
  34.     char ch;
  35.  
  36.  
  37.     system("cls");
  38.     dispList();
  39.     cout << "\n\nEnter choice\n1) insert beg\n2) insert after\n3) insert end\n"
  40.                             <<"4) delete beg\n5) delete after\n6) delete end\n"
  41.                             <<"7) exit\n";
  42.     ch = _getch();
  43.  
  44.     switch (ch) {
  45.  
  46.     case '1':insBeg(); break;
  47.     case '2':insMid(); break;
  48.     case '3':insEnd(); break;
  49.     case '4':delBeg(); break;
  50.     case '5':delMid(); break;
  51.     case '6':delEnd(); break;
  52.     case '7':return false;
  53.  
  54.     }
  55.     //_getch();
  56.     return true;
  57. }
  58.  
  59. void insBeg() {
  60.  
  61.     NODE *node = new NODE, *tmp;
  62.     cout << "Enter new element : "; cin >> node->data;
  63.     tmp = head;
  64.     head = node;
  65.     node->next = tmp;
  66.  
  67. }
  68.  
  69. void insMid() {
  70.  
  71.     NODE *node = new NODE, *tmp, *cur = head;
  72.     int num;
  73.     cout << "Enter new element : "; cin >> node->data;
  74.     cout << "Enter num : "; cin >> num;
  75.     while ((cur) && (cur = cur->next))
  76.         if (cur->data == num)break;
  77.  
  78.     if (cur == NULL)
  79.         cout << "Element not found";
  80.     else {
  81.         tmp = cur->next;
  82.         cur->next = node;
  83.         node->next = tmp;
  84.     }
  85.  
  86. }
  87.  
  88. void insEnd() {
  89.  
  90.     NODE *node = new NODE, *cur = head;
  91.     node->next = NULL;
  92.     cout << "Enter new value : "; cin >> node->data;
  93.     while ((cur) && (cur->next != NULL))
  94.         cur = cur->next;
  95.     if (cur)
  96.         cur->next = node;
  97.     else
  98.         head = node;
  99.  
  100. }
  101.  
  102. void delBeg() {
  103.  
  104.    
  105.     if (head) {
  106.         NODE *tmp = head;
  107.         head = head->next;
  108.         delete tmp;
  109.     }
  110.  
  111. }
  112.  
  113. void delMid() {
  114.  
  115.     NODE *cur = head, *tmp;
  116.     int data;
  117.     cout << "Enter element to delete : "; cin >> data;
  118.  
  119.     while ((cur->next) && ((cur->next)->data != data))
  120.         cur = cur->next;
  121.  
  122.     if (cur) {
  123.         tmp = cur->next;
  124.         cur->next = cur->next->next;
  125.         delete tmp;
  126.     }
  127. }
  128.  
  129. void delEnd() {
  130.     NODE *cur = head, *tmp;
  131.  
  132.     while ((cur->next) && ((cur->next)->next != NULL))
  133.         cur = cur->next;
  134.  
  135.     if (cur) {
  136.         tmp = cur->next;
  137.         cur->next = NULL;
  138.         delete tmp;
  139.     }
  140. }
  141.  
  142. void dispList() {
  143.  
  144.     NODE *cur = head;
  145.  
  146.     cout << "Linked List : ";
  147.     if (!cur)cout << "EMPTY!";
  148.     while (cur) {
  149.         cout << cur->data << " -> ";
  150.         cur = cur->next;
  151.     }
  152.  
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement