Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. void Sznur::partRemove(int n) {
  2.     if(head == nullptr) throw std::logic_error("Lista jest pusta");
  3.     if(head->next == nullptr && head->value == n) delete head;
  4.     Node* walker = head;
  5.     Node* pred = nullptr;
  6.     Node* succ = nullptr;
  7.  
  8.     while(true) {
  9.         while(walker != nullptr && walker->next != nullptr && walker->next->value < n) {
  10.             walker = walker->next;
  11.         }
  12.    
  13.  
  14.         pred = walker;
  15.         walker = walker->next;
  16.  
  17.         Node* killer = nullptr;
  18.  
  19.         while(walker != nullptr && walker->value == n) {
  20.             walker = walker->next;
  21.         }
  22.         succ = walker;
  23.         walker = pred->next;
  24.  
  25.         while(walker != nullptr && walker != succ) {
  26.             killer = walker;
  27.             walker = walker->next;
  28.             delete killer;
  29.         }
  30.         pred->next = succ;
  31.        walker = (succ == nullptr) ? nullptr : succ->next;
  32.        if(walker == nullptr) break;
  33.     }
  34.  
  35.  
  36.  
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement