Queue Template Using Linked List In Data Structure Using C++

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++

Comments

  1. If I try to get front without enqueue anything like this(i will get garbage value along with statement that queue is empty):
    queue q;
    cout<<get.<<q.getFront().word;

    I will output like this:
    queue is empty.

    How to overcome this.
    GARBAGE_VALUE

    ReplyDelete

Post a Comment