BLT/include/blt/std/queues.h

62 lines
1.3 KiB
C
Raw Normal View History

2022-12-26 00:31:00 -05:00
/*
* Created by Brett on 26/12/22.
* Licensed under GNU General Public License V3.0
* See LICENSE file for license detail
*/
#ifndef BLT_QUEUES_H
#define BLT_QUEUES_H
namespace BLT {
template<typename T>
struct node {
T t;
node* next;
};
template<typename T>
class flat_queue {
};
template<typename T>
class node_queue {
private:
node<T>* head;
public:
2022-12-26 00:55:49 -05:00
void insert(const T& t) {
2022-12-26 00:31:00 -05:00
auto newNode = new node<T>(t, nullptr);
if (head == nullptr)
head = newNode;
else {
newNode->next = head;
head = newNode;
}
}
2022-12-26 00:55:49 -05:00
[[nodiscard]] const T& front() const {
2022-12-26 00:31:00 -05:00
return head->t;
}
void pop() {
auto nextNode = head->next;
delete(head);
head = nextNode;
}
~node_queue() {
auto next = head;
while (next != nullptr){
auto nextNode = next->next;
delete(next);
next = nextNode;
}
}
};
}
#endif //BLT_QUEUES_H