Insert and Delete Element from the queue..



Show the status of the queue after every operation :-
                      1)     Insert  5 Element 
                       2)  Delete 2 Element



#include<stdio.h>
#include<conio.h>
#define MAX 10
typedef struct Q
{

    int R,F;
    int data[MAX];

}Q;
void initialize(Q*p);
int empty(Q *p);
int full(Q *p);
void enqueue(Q *p,int x);
int dequeue(Q *p);
void print(Q *p);
void main()
{

    Q q;
    int i,x;
    initialize(&q);
    printf("\n Enter 5 element:");
    for(i=1;i<=5;i++)
    {

        scanf("%d",&x);
        if(!full(&q))
        {
            enqueue(&q,x);
        }
        else
        {
            printf("\n Queue is full!....");
            exit(0);
        }

    }
    print(&q);
    for(i=1;i<=2;i++)
    {

        if(!empty(&q))
        {
            x=dequeue(&q);
        }
            else
            {
                printf("\n Can not delete....Queue is empty");
                exit(0);
            }
    }
    print(&q);

}
void initialize(Q *p)
{

    p->R=-1;
    p->F=-1;
}
int empty(Q *p)
{
    if(p->R==-1)
        return 1;
    return 0;
}
int full(Q *p)
{

    if(p->R==MAX-1)
        return 1;
    return 0;
}
void enqueue(Q *p,int x)
{

    if(p->R==-1)
    {

        p->R=p->F=0;
        p->data[p->R]=x;
    }
    else
        {
        p->R=p->R+1;
        p->data[p->R]=x;

    }
}
int dequeue(Q *p)
{

    int x;
    x=p->data[p->F];
    if(p->R==p->F)
    {

        p->R=-1;
        p->F=-1;
    }
    else
    {
        p->F=p->F+1;
        return x;
    }
}
    void print(Q *p)
    {
        int i;
        if(!empty(p))
        {
            printf("\n");
            for(i=p->F;i<=p->R;i++)
                printf("%d\t",p->data[i]);
        }
    }

Comments