Wednesday, 23 October 2013

Program for Queue Data Structure in c++ | Queue Implementation

Queue is an abstract data type and a common data structure similar to stack . Queue is an ordered list in which insertions (Push) , deletion (Pop) operations are done at different ends . The end at which insertion is performed is known as rear end . The end at which deletion (Pop) operation is performed is known as front end .
Queue follows "First in First Out Principle" which implies that the element which is inserted first is deleted first from the queue . Queue can be implemented using arrays and linkedlists . 
for example : Let 1,2,3,4,5 be the five elements inserted and the first element inserted is 1 and next element to be inserted is 2 and soon . To delete an element from the Queue , the first element to be deleted is 1 which follows First In First Out principle .
image credits : wikipedia.org
 Also check : Implementation of Stacks using c++

Applications of Queue :

The main application of Queue of Processors in the operating system . The first program or instruction that is to be passed must be executed first which follows Queue Principle .
In my previous post I discussed about implementation  of stacks with Push , pop and top operations . In the similar way we perform Push , pop operations in Queue at two different ends .

Push :

Push an element into the queue or Insert an element into the queue from the rear end . If the queue is full i.e we cannot insert any element into the queue and this situation is known as "Queue Overflow".

Pop :

Delete an element or to pop an element form the queue at the front end . This operation is performed at the front end of the queue .
If the pop operation is performed the first element is removed the vacancy is created . To fill the vacancy the elements in the queue are rearranged after an element is removed from the queue . "Queue Underflow " occurs when the pop operation is performed in an empty Queue .

Program for Queue and implementation using c++


/* Queue implementation using c++ */
#include<iostream>
using namespace std;
class queue
{
public :
    int *a,f,r,size;
    queue()
    {
        f=0;
        r=-1;
        cout<<"\nEnter size of the Queue\n";
        cin>>size;
        a = new int [size];
    }
    int isempty();
    int isfull();
    int push();
    int pop();
    int display();
};
    int queue :: isempty()
    {
        if(r==-1)
            return 1;
        return 0;
    }
    int queue :: isfull()
    {
        if(r==(size-1))
            return 1;
        return 0;
    }
    int queue :: push()
    {
        if(isfull())
        {
            cout<<"\n Queue Overflow\n";
            return 0;
        }
        else
        {
            cout<<"\nEnter an Element\n";
            cin>>a[++r];
            cout<<"Inserted successfully\n";
        }
    }
    int queue :: pop()
    {
        if(isempty())
        {
            cout<<"\nQueue Underflow\n";
            return 0;
        }
        for(int i=0;i<=r;i++)
            a[i]=a[i+1];
        --r;
        cout<<"Element deleted successfully\n";
    }
    int queue :: display()
    {
        if(isempty())
        {
            cout<<"\nQueue is empty -- No element to display\n";
            return 0;
        }
        else
        {
            for(int i=0;i<=r;i++)
                cout<<""<<a[i]<<" ";
        }
    }
int main()
{
    int i=0,s;
    queue q;
    while(i!=1)
    {
        cout<<"\n*********M E N U*********\n";
        cout<<"\n1.Push\n2.Pop\n3.Display\n4.Exit\n";
        cout<<"Enter option\n";
        cin>>s;
        switch(s)
        {
        case 1:
            q.push();
            break;
        case 2:
            q.pop();
            break;
        case 3:
            q.display();
            break;
        case 4:
            i=1;
            break;
        default :
            cout<<"\nEnter correct option\n";
            break;
        }
    }
    return 0;
}

Output of the program :



Download the program source code . The above program is implemented in c++ using object oriented programming .

Also check : Search algorithm for Binary search Tree

If  I have missed anything please get it to me through comments . Also share your logic and idea with us through comments . If you feel there can be a better way and logic to improve the program please comment below .


1 comments:

  1. public:
    int *a,f,r,size;

    Please, change to private:
    private:
    int *a,f,r,size;
    public:
    queue()...

    ReplyDelete