#include <iostream>
using namespace std;
#include <iostream>
using namespace std;
class Node {
public :
int data;
Node *next;
Node() {
data = 0;
next = NULL;
}
Node(int data) {
this->data = data;
this->next = NULL;
}
};
class Queue {
Node *head;
Node *tail;
public :
void enqueue(int data);
void dequeue();
void display();
bool isEmpty();
};
bool Queue::isEmpty() {
if(head == NULL) {
return true;
}
return false;
}
void Queue::enqueue(int data) {
Node *newNode = new Node(data);
cout << "enqueue : " << data << endl;
if(head == NULL) {
head = newNode;
tail = newNode;
return;
}
while(tail->next != NULL) {
tail = tail->next;
}
tail->next = newNode;
tail = newNode;
}
void Queue::dequeue() {
if(head == NULL) {
cout << "Queue is Empty" << endl ;
return;
}
Node *temp = head;
cout << "dequeue : " << temp->data << endl;
head = head->next;
delete temp;
}
void Queue::display() {
if(head == NULL) {
cout << "Stack is Empty" << endl ;
return;
}
cout << "Queue Elements : " << endl;
Node *temp = head;
while(temp != NULL) {
cout << temp->data << endl;
temp = temp->next;
}
}
int main() {
Queue *queue = new Queue();
queue->enqueue(1);
queue->enqueue(2);
queue->enqueue(3);
queue->enqueue(4);
queue->display();
queue->dequeue();
queue->display();
queue->enqueue(5);
queue->display();
queue->dequeue();
queue->display();
queue->dequeue();
queue->display();
queue->dequeue();
queue->display();
queue->dequeue();
queue->display();
return 0;
}