0

#include<stdio.h>

#include<stdlib.h>

int sizec,sizep;

struct queue

{

int *item;

int f,r,cnt;

};

typedef struct queue QUE;

void insertpriority(QUE *q)

{

if(q->cnt==sizep)

{

    printf("Queue FULL\nReallocating\n");

    q->item=((int *)realloc(q->item,2*sizep));

    sizep=2*sizep;

}

printf("Enter item : ");int items;scanf("%d",&items);

int j=q->r;

while(j>=q->f && *(q->item+j)>items)

{

    *(q->item+j+1)=*(q->item+j);

    j--;

}

*(q->item+j+1)=items;

q->r++;q->cnt++;

}

void delete(QUE *q)

{

if(q->cnt==0)

return;

printf("Deleted %d\n",*(q->item+q->f));

q->f++;q->cnt--;

if(q->f>q->r)

{

    q->r=-1;q->f=0;

}

}

void display(QUE q)

{

if(q.cnt==0)

{

    printf("Queue is Empty\n");return;

}

int j=0;

while(j<q.cnt)

{

    printf("%d ",*(q.item+q.f));

    q.f=(q.f+1)%sizec;

    j++;

}

printf("\n");

}

void insertcircular(QUE *q)

{

if(q->cnt==sizec)

{

    printf("Queue FULL\nReallocating\n");

    q->item=((int *)realloc(q->item,2*sizec*sizeof(int)));

    sizec=2*sizec;

}

printf("Enter item : ");int items;scanf("%d",&items);

q->r=(q->r+1)%sizec;

*(q->item+q->r)=items;

q->cnt++;

}

void priority(QUE *QP)

{

 printf("1.Insert\n2.Delete\n3.Display\nEnter Your Choice : ");int ch1;scanf("%d",&ch1);

    switch(ch1)

    {

        case 1:insertpriority(QP);break;

        case 2:delete(QP);break;

        case 3:return;

        default:exit(0);

    }

}

void circular(QUE *QC)

{

 printf("1.Insert\n2.Delete\n3.Display\nEnter Your Choice : ");int ch1;scanf("%d",&ch1);

    switch(ch1)

    {

        case 1:insertcircular(QC);break;

        case 2:delete(QC);break;

        case 3:return;

        default:exit(0);

    }

}

void main()

{

printf("Enter Size of Circular Queue : ");scanf("%d",&sizec);

QUE QC;QC.item=((int *)malloc(sizec*sizeof(int)));

printf("Enter Size of Priority Queue : ");scanf("%d",&sizep);

QUE QP;QP.item=((int *)malloc(sizep*sizeof(int)));

QC.f=QP.f=QC.cnt=QP.cnt=0;

QC.r=QP.r=-1;

int ch,ch1;

for(;;)

{

    printf("1.Circular Queue\n2.Priority Queue\nEnter Your Choice : ");scanf("%d",&ch);

    if(ch==1)

    {

       circular(&QC);display(QC);

    }

    else if(ch==2)

    {

       priority(&QP);display(QP);

    }

    else 

    {

        printf("Invalid Choice\n");break;

    }

}

}

In Circular Queue , assuming size of it is 3,after performing following set of operations,it results in garbage value Storage 1)Size of Circular Queue=3 2)Insert 3 elements 3) Delete once 4)Perform Insertion twice again

0 Answers0