In: Computer Science
Implement a generic queue. Use the code below for main().
main()
{
int i, x;
float y;
char z;
Queue<int> A;
Queue<float> B;
Queue<char> C;
ifstream in;
in.open("int.txt");
for (i = 0; i < 100; i++){
in >> x;
A.enqueue(x);
}
cout << A.dequeue() << endl;;
for (i = 0; i < 12; i++)
A.enqueue(i);
cout << A.dequeue() << endl;
cout << A.dequeue() << endl;
cout << "Dequeueing: "<< A.dequeue()<< endl;
while (!A.isEmpty())
cout << A.dequeue() << " ";
if (A.isEmpty())
cout << "Integer Queue Is Empty " << endl;
in.close();
cout << endl << "Now for the floating point numbers...." << endl;
in.open("float.txt");
for (i = 0; i < 100; i++){
in >> y;
B.enqueue(y);
}
cout << "Here are the first ten:" << endl;
for (i = 0; i < 10; i++){
cout << B.dequeue() << endl;
}
in.close();
in.open("char.txt");
for (i = 0; i < 100; i++){
in >> z;
C.enqueue(z);
}
cout << "Here are the characters" << endl;
while (!C.isEmpty()){
cout << C.dequeue();
}
in.close();
}
GENERIC QUEUE
Below is the implementation of a Generic Queue using Linked List :
#include<iostream>
#include <fstream>
using namespace std;
template <typename T>
class Node {
public :
T data;
Node<T> *next;
Node(T data) {
this -> data = data;
next = NULL;
}
};
template<typename T>
class Queue {
Node <T>*head;
Node <T>*tail;
int size;
public :
Queue() {
size=0;
head=NULL;
tail=NULL;
}
void enqueue(T data) {
if(head==NULL)
{
Node<T> *n=new Node<T>(data);
head=n;
tail=n;
size++;
}
else
{
Node<T> *n=new Node<T>(data);
tail->next=n;
tail=n;
size++;
}
}
int getSize() {
return size;
}
bool isEmpty() {
return size==0;
}
T dequeue() {
// Return 0 if queue is empty
if(size==0)
return 0;
else
{
Node <T> *n=new Node <T> (head->data);
head=head->next;
size--;
return n->data;
}
}
T front() {
// Return 0 if queue is empty
if(size==0)
return 0;
else
return head->data;
}
};