Naxocist

LinkedList [insert_in_order]

Apr 3rd, 2022
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.80 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define endll '\n'
  3. using namespace std;
  4.  
  5.  
  6. struct node {
  7.     int val;
  8.     node *next;
  9. };
  10.  
  11. node *head = NULL;
  12.  
  13. node *createNode(int val){
  14.     // node *newNode = (node *) malloc(sizeof(node));
  15.     node *newNode = new node;
  16.     newNode->val = val;
  17.     newNode->next = NULL;
  18.  
  19.     return newNode;
  20. }
  21.  
  22. void printNode(){
  23.  
  24.     node *curr = head;
  25.  
  26.     while(curr != NULL) {
  27.         cout << curr->val << " ";
  28.         curr = curr->next;
  29.     }
  30.     cout << endll;
  31.  
  32. }
  33.  
  34. void insertNode(int val){
  35.     node *newNode = createNode(val);
  36.     if(head == NULL) {
  37.         head = newNode;
  38.         return ;
  39.     }
  40.  
  41.     node *curr = head, *prev = NULL;
  42.     while(curr && curr->val < val) {
  43.         prev = curr;
  44.         curr = curr->next;
  45.     }
  46.  
  47.     if(!prev) {
  48.         head = newNode;
  49.         newNode->next = curr;
  50.         return ;
  51.     }
  52.     prev->next = newNode;
  53.     newNode->next = curr;
  54.  
  55. }
  56.  
  57. void deleteNode(int val){
  58.     if(head == NULL) {
  59.         cout << val << " [not deleted]\n";
  60.         return ;
  61.     }
  62.  
  63.     node *curr = head, *prev = NULL;
  64.     while(curr && curr->val != val){
  65.         prev = curr;
  66.         curr = curr->next;
  67.     }
  68.     if(!curr){
  69.         cout << val << " [not deleted]\n";
  70.         return ;
  71.     }
  72.     if(!prev){
  73.         head = head->next;
  74.         cout << val << " [deleted]\n";
  75.         return ;
  76.     }
  77.  
  78.     cout << val << " [deleted]\n";
  79.     prev->next = curr->next;
  80.     free(curr);
  81.  
  82. }
  83.  
  84.  
  85. int main() {
  86.  
  87.      int n; cin >> n;
  88.  
  89.      while(n--){
  90.          char c; cin >> c;
  91.          int x;
  92.          if(c == 'i'){
  93.              cin >> x;
  94.              insertNode(x);
  95.          }
  96.  
  97.          if(c == 'd'){
  98.              cin >> x;
  99.              deleteNode(x);
  100.          }
  101.  
  102.          if(c == 'p') printNode();
  103.      }
  104.  
  105.     return 0;
  106. }
  107.  
Advertisement
Add Comment
Please, Sign In to add comment