From 9d9bd35065ded1d78c9a07af2953e69fc8eb61d4 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Sun, 8 Jan 2023 22:35:13 +0200 Subject: [SDP/HEP] Added preparation for "homework" during class --- .../HomeworkExamPrep/Queue/Queue_Dynamic.hpp | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Year 2/Structures and data algorithms/HomeworkExamPrep/Queue/Queue_Dynamic.hpp (limited to 'Year 2/Structures and data algorithms/HomeworkExamPrep/Queue/Queue_Dynamic.hpp') diff --git a/Year 2/Structures and data algorithms/HomeworkExamPrep/Queue/Queue_Dynamic.hpp b/Year 2/Structures and data algorithms/HomeworkExamPrep/Queue/Queue_Dynamic.hpp new file mode 100644 index 0000000..02c8888 --- /dev/null +++ b/Year 2/Structures and data algorithms/HomeworkExamPrep/Queue/Queue_Dynamic.hpp @@ -0,0 +1,60 @@ +#ifndef QUEUE_DYNAMIC +#define QUEUE_DYNAMIC + +template +class Queue { + struct Node { + T val; + Node* next; + + Node(const T& v) : val(v), next(nullptr) {} + }; + + Node* head; + Node* tail; + +public: + Queue(); + ~Queue(); + Queue(Queue& other) = delete; + Queue& operator=(Queue& other) = delete; + + void push(const T& v); + void pop(); + T& front(); +}; + +template +Queue::Queue() : head(nullptr), tail(nullptr) {} + +template +Queue::~Queue() { + while (head != nullptr) + pop(); +} + +template +void Queue::push(const T& v) { + if (head == nullptr) { + head = tail = new Node(v); + } + else { + tail->next = new Node(v); + tail = tail->next; + } +} + +template +void Queue::pop() { + Node* toDel = head; + head = head->next; + delete toDel; + if (head == nullptr) tail = nullptr; +} + +template +T& Queue::front() { + return head->val; +} + +#endif -- cgit v1.3.1-23-gd82d