summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSanto Cariotti <dcariotti24@gmail.com>2020-05-24 15:45:44 +0200
committerSanto Cariotti <dcariotti24@gmail.com>2020-05-24 15:45:44 +0200
commitf04e3a465b28b921f89695ca4743ac8b439b17f1 (patch)
treeeb31e7d58b6f150562499b831073b6a656eacef3
parentd58e4f1ff807fc7ef321495ed6e231ea798102d5 (diff)
fix: queue and stack push/pop
-rw-r--r--I_anno/Programmazione_2/data_structures/queue.cc19
-rw-r--r--I_anno/Programmazione_2/data_structures/stack.cc7
2 files changed, 8 insertions, 18 deletions
diff --git a/I_anno/Programmazione_2/data_structures/queue.cc b/I_anno/Programmazione_2/data_structures/queue.cc
index e1d4dcb..8398459 100644
--- a/I_anno/Programmazione_2/data_structures/queue.cc
+++ b/I_anno/Programmazione_2/data_structures/queue.cc
@@ -35,20 +35,11 @@ public:
}
node<T>* dequeue() {
- auto iter = _head;
-
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 elem;
+ auto iter = _head;
+ delete _head;
+ _head = iter->next;
+ return iter;
}
void print() {
@@ -60,8 +51,8 @@ public:
cout << endl;
}
private:
- node<T>* _tail;
node<T>* _head;
+ node<T>* _tail;
};
int main() {
diff --git a/I_anno/Programmazione_2/data_structures/stack.cc b/I_anno/Programmazione_2/data_structures/stack.cc
index f1cc7d1..ffff780 100644
--- a/I_anno/Programmazione_2/data_structures/stack.cc
+++ b/I_anno/Programmazione_2/data_structures/stack.cc
@@ -34,12 +34,11 @@ public:
node<T>* pop() {
if(!_head) return nullptr;
-
- auto old_head = _head;
+ node<T>* elem = _head;
delete _head;
- _head = _head->next;
+ _head = elem->next;
- return old_head;
+ return elem;
}
void print() {