Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Sznur::partRemove(int n) {
- if(head == nullptr) throw std::logic_error("Lista jest pusta");
- if(head->next == nullptr && head->value == n) delete head;
- Node* walker = head;
- Node* pred = nullptr;
- Node* succ = nullptr;
- while(true) {
- while(walker != nullptr && walker->next != nullptr && walker->next->value < n) {
- walker = walker->next;
- }
- pred = walker;
- walker = walker->next;
- Node* killer = nullptr;
- while(walker != nullptr && walker->value == n) {
- walker = walker->next;
- }
- succ = walker;
- walker = pred->next;
- while(walker != nullptr && walker != succ) {
- killer = walker;
- walker = walker->next;
- delete killer;
- }
- pred->next = succ;
- walker = (succ == nullptr) ? nullptr : succ->next;
- if(walker == nullptr) break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement