Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Node {
- struct Node *next;
- struct Node *prev;
- string data;
- Node(string dataIn) { data = dataIn; next = nullptr; prev = nullptr;}
- };
- class LinkedQueue {
- public:
- int size;
- struct Node *head = nullptr;
- struct Node *tail = nullptr;
- LinkedQueue() {
- size = 0;
- };
- void enqueue(string newData) {
- if (head == nullptr) {
- Node *new_node = new Node(newData);
- head = new_node;
- size+=1;
- return;
- }
- else if (tail == nullptr && head != nullptr) { //second node in queue
- Node *new_node = new Node(newData);
- new_node->prev = head;
- head->next = new_node;
- tail = new_node;
- size+=1;
- return;
- }
- Node *new_node = new Node(newData);
- tail->next = new_node;
- new_node->prev = tail;
- tail = new_node;
- size+=1;
- cout << "success" << endl;
- }
- Node* search(string value) {
- if (head == nullptr) {
- cout << "There are no items in the queue" << endl;
- return nullptr;
- }
- Node *ptr = head;
- while (ptr !=nullptr) {
- if (ptr->data == value) {
- return ptr;
- }
- ptr = ptr->next;
- }
- return nullptr;
- }
- void dequeue(Node *refNode) {
- if (refNode->next == nullptr) { //tail
- if (refNode == tail) { //check
- Node *ptr = tail;
- (ptr->prev)->next = nullptr;
- tail = ptr->prev;
- delete ptr;
- }
- }
- else if (refNode->prev == nullptr) { //head
- if (refNode == head) { //check
- Node *ptr = head;
- (ptr->next)->prev = nullptr;
- head = ptr->next;
- delete ptr;
- }
- }
- (refNode->prev)->next = (refNode->next);
- (refNode->next)->prev = (refNode->prev);
- delete refNode;
- }
- void printQueue() {
- if (head == nullptr) {
- cout << "There are no items in the queue" << endl;
- return;
- } else {
- Node *ptr = head;
- while (ptr !=nullptr) {
- cout << ptr->data << endl;
- ptr = ptr->next;
- }
- }
- }
- };
- int main() {
- LinkedQueue queue;
- queue.enqueue("Timmy");
- queue.enqueue("Jimmy");
- queue.enqueue("Kimmy");
- queue.enqueue("Qimmy");
- queue.enqueue("Bimmy");
- queue.dequeue(queue.search("Qimmy"));
- cout << queue.size << endl;
- cout << "Head value: " << queue.head->data << endl;
- cout << "Tail value: " << queue.tail->data << endl;
- queue.printQueue();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement