diff options
author | Santo Cariotti <dcariotti24@gmail.com> | 2020-05-14 16:39:49 +0200 |
---|---|---|
committer | Santo Cariotti <dcariotti24@gmail.com> | 2020-05-14 16:39:49 +0200 |
commit | 81d68a2807241848a9f96ae9f0f0b405f348154f (patch) | |
tree | f1b822655f60580a0bb125c16b51da5e942142de /I_anno/Programmazione_2/data_structures | |
parent | b0e77499f3a87539dc2f1d9f64f7448d7c0914fc (diff) |
fix: return node removed stack and queue
Diffstat (limited to 'I_anno/Programmazione_2/data_structures')
-rw-r--r-- | I_anno/Programmazione_2/data_structures/queue.cc | 13 | ||||
-rw-r--r-- | I_anno/Programmazione_2/data_structures/stack.cc | 13 |
2 files changed, 17 insertions, 9 deletions
diff --git a/I_anno/Programmazione_2/data_structures/queue.cc b/I_anno/Programmazione_2/data_structures/queue.cc index c565ac6..e1d4dcb 100644 --- a/I_anno/Programmazione_2/data_structures/queue.cc +++ b/I_anno/Programmazione_2/data_structures/queue.cc @@ -34,19 +34,21 @@ public: return this; } - queue<T>* dequeue() { + node<T>* dequeue() { auto iter = _head; - if(!_head) return this; + if(!_head) return nullptr; while(iter->next != _tail) { iter = iter->next; } + node<T>* elem = iter->next; + delete iter->next; iter->next = nullptr; _tail = iter; - return this; + return elem; } void print() { @@ -67,7 +69,10 @@ int main() { q->dequeue(); q->enqueue(4)->enqueue(2)->enqueue(8); - q->dequeue(); + q->print(); + auto e = q->dequeue(); + if(e) + cout << e->value << endl; q->enqueue(1); q->print(); diff --git a/I_anno/Programmazione_2/data_structures/stack.cc b/I_anno/Programmazione_2/data_structures/stack.cc index 400039d..f1cc7d1 100644 --- a/I_anno/Programmazione_2/data_structures/stack.cc +++ b/I_anno/Programmazione_2/data_structures/stack.cc @@ -32,14 +32,14 @@ public: return this; } - stack<T>* pop() { - if(!_head) return this; + node<T>* pop() { + if(!_head) return nullptr; auto old_head = _head; + delete _head; _head = _head->next; - delete old_head; - return this; + return old_head; } void print() { @@ -59,7 +59,10 @@ int main() { s->pop(); s->push(4)->push(2)->push(8); - s->pop(); + s->print(); + auto e = s->pop(); + if(e) + cout << e->value << endl; s->push(1); s->print(); |