Data Structure Using C++
Queue Data Structure
Queue Template Using Linked List
template <class t>
class node
{
private:
t data;
node<t> *next;
public:
node(t d);
void setData (t d);
t getData ();
void setNext (node<t> *);
node<t>* getNext ();
void showData();
};
template <class t>
node<t>::node(t d)
{
data=d;
next=NULL;
}
template <class t>
void node<t>::setData (t d)
{
data=d;
}
template <class t>
t node<t>::getData()
{
return data;
}
template <class t>
void node<t>::setNext (node<t> *ptr)
{
next=ptr;
}
template <class t>
node<t> * node<t>::getNext()
{
return next;
}
template <class t>
void node<t>::showData()
{
cout<<getData()<<" ";
}template <class t>
class queue
{
private:
node<t> *front;
node<t> *rear;
public:
queue();
void enqueue(t );
t dequeue ();
t getFront();
bool isEmpty();
};
template <class t>
queue<t>::queue()
{
front = NULL;
rear = NULL;
}
template <class t>
void queue<t>::enqueue(t val)
{
node<t> *ptr=new node<t>(val);
if(rear==NULL&&front==NULL)
{
rear=ptr;
front=ptr;
}
else
{
rear->setNext(ptr);
rear=ptr;
}
}
template <class t>
t queue<t>::dequeue()
{
if(!isEmpty())
{
node<t> *ptr=front;
t x=front->getData();
front=front->getNext();
delete ptr;
return x;
}
else
{
cout<<"queue is empty."<<endl;
}
}
template <class t>
t queue<t>::getFront()
{
if(!isEmpty())
{
return front->getData();
}
else
{
cout<<"queue is empty."<<endl;
}
}
template <class t>
bool queue<t>::isEmpty()
{
return (front==NULL);
}
struct dic
{
char* word;
char* meaning;
};
int main()
{
dic w1, w2, w3;
w1.word="Pure";
w1.meaning="Clean";
w2.word="Beautiful";
w2.meaning="Attractive";
w3.word="Fair";
w3.meaning="Just";
queue <dic> q;
q.enqueue(w1);
q.enqueue(w2);
q.enqueue(w3);
cout<<"Front is : "<<q.getFront().word<<":"<<q.getFront().meaning<<endl;
q.dequeue();
q.dequeue();
cout<<"Front is : "<<q.getFront().word<<":"<<q.getFront().meaning<<endl;
}
Let me know in the comment section if you have any question.
Previous Post:
Double Ended Queue Using Linked List In Data Structure Using C++
Next Post:
If I try to get front without enqueue anything like this(i will get garbage value along with statement that queue is empty):
ReplyDeletequeue q;
cout<<get.<<q.getFront().word;
I will output like this:
queue is empty.
How to overcome this.
GARBAGE_VALUE