Skip to content

Commit 57650d3

Browse files
committed
Queue Implementation
1 parent efb4e0d commit 57650d3

File tree

1 file changed

+154
-0
lines changed

1 file changed

+154
-0
lines changed
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
// ConsoleApplication1.cpp : Defines the entry point for the console application.
2+
//
3+
4+
#include <iostream>
5+
#include "stdafx.h"
6+
using namespace std;
7+
8+
class Node{
9+
public:
10+
int data;
11+
Node* next;
12+
Node(){
13+
data = 0;
14+
next = NULL;
15+
};
16+
};
17+
18+
class Queue{
19+
public:
20+
Node*front;
21+
Node*tail;
22+
Queue(){
23+
front = tail = NULL;
24+
};
25+
26+
//Queue Operation
27+
//1- isEmpty()
28+
bool isEmpty(){
29+
if (front == NULL &&tail == NULL)
30+
return true;
31+
else
32+
return false;
33+
}
34+
35+
//2- Enqueue() - add new items to queue
36+
void enqueue(int newVal){
37+
Node* newNode = new Node();
38+
if (isEmpty()){
39+
//if queue is empty so that head & tail are equal the new node
40+
newNode->data = newVal;
41+
front = tail = newNode;
42+
}else{
43+
newNode->data = newVal;
44+
tail->next = newNode;
45+
tail = newNode;
46+
}
47+
};
48+
49+
//3- Display() - Traversing on Queue
50+
void display(){
51+
if (isEmpty()){
52+
cout << "Queue is Empty! \n";
53+
}else{
54+
Node*temp;
55+
temp = front;
56+
while (temp != NULL){
57+
cout << temp->data << " ";
58+
temp = temp->next;
59+
};
60+
cout << endl;
61+
};
62+
};
63+
64+
//4- Dequeue(); - Remove element from Queue
65+
int dequeue(){
66+
int saveDeletedValue = -1;
67+
if (isEmpty()){
68+
//if queue has no items
69+
cout << "Queue is Empty! \n";
70+
}else if (front == tail){
71+
//if queue has the last item
72+
delete front;
73+
front = tail = NULL;
74+
}else{
75+
//if queue has more than one item
76+
Node*delPtr;
77+
delPtr = front;
78+
front = front->next;
79+
80+
//to store removed value before delete it from memory
81+
saveDeletedValue = delPtr->data;
82+
delete delPtr;
83+
};
84+
return saveDeletedValue;
85+
};
86+
87+
//5- getFront() - return the first item in queue
88+
int getFront(){
89+
return front->data;
90+
};
91+
92+
//6- getTail() - return the last item in queue
93+
int getTail(){
94+
return tail->data;
95+
};
96+
//7- counter() - return the number of items in queue
97+
int counter(){
98+
int count = 0;
99+
Node*temp = front;
100+
while (temp!=NULL){
101+
count++;
102+
temp = temp->next;
103+
};
104+
return count;
105+
};
106+
107+
//8- search() - check if item is found in queue
108+
bool search(int val){
109+
bool found = false;
110+
Node*temp = front;
111+
while (temp!=NULL){
112+
if (temp->data == val)
113+
found = true;
114+
temp = temp->next;
115+
};
116+
return found;
117+
};
118+
119+
//9- clear() - remove all queue items
120+
void clear(){
121+
while (!isEmpty()){
122+
dequeue();
123+
};
124+
};
125+
126+
};
127+
128+
int _tmain()
129+
{
130+
///////////////////////////////////////////////////////////////////
131+
Queue LinkedQueue;
132+
for (int i = 0; i < 4; i++){
133+
int val;
134+
cout << "enter item number " << i+1 <<" to enqueue: \n";
135+
cin >> val;
136+
LinkedQueue.enqueue(val);
137+
};
138+
LinkedQueue.display();
139+
cout << "Queue has " << LinkedQueue.counter() << " items\n";
140+
///////////////////////////////////////////////////////////////////
141+
for (int i = 0; i < 2; i++){
142+
cout << LinkedQueue.dequeue() << " removed from queue! \n";
143+
};
144+
cout << "After Dequeue \n";
145+
LinkedQueue.display();
146+
///////////////////////////////////////////////////////////////////
147+
cout << "Clear all Queue Items \n";
148+
LinkedQueue.clear();
149+
LinkedQueue.display();
150+
////////////////////////**Program End**////////////////////////////
151+
system("pause");
152+
return 0;
153+
}
154+

0 commit comments

Comments
 (0)