BLT/include/blt/std/queues.h

63 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;
2022-12-26 00:57:11 -05:00
node(const T& t, node* next){
this->t = t;
this->next = next;
}
2022-12-26 00:31:00 -05:00
};
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
if (head == nullptr)
2022-12-26 01:02:46 -05:00
head = new node<T>(t, nullptr);
else
head = new node<T>(t, head);
2022-12-26 00:31:00 -05:00
}
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