#include<stdio.h>
#include<conio.h>
#define SIZE 5
int front = -1;
int rear = -1;
int queue[SIZE];
void enqueue(int item);
int dequeue();
void display();
void main()
{
int item, choice, cont = 1;
clrscr();
while(cont == 1)
{
printf("\n1.Enqueue into queue.\n"); printf("\n2.Dequeue from queue.\n"); printf("\n3.display quesue elements\n");
printf("\nEnter your choice: ");
switch(choice)
{
case 1:
printf("\nEnter the value of item: "); enqueue(item);
break;
case 2:
item = dequeue();
if(item != NULL)
{
printf("\nItem dequeued: %d\n",item
); }
break;
case 3:
display();
break;
default:
printf("\nInvalid choice.\n"); break;
}
printf("\nDo you want to continue (1/0): "); }
}
void enqueue(int item)
{
int temp = (rear+1)%SIZE; // EDIT HERE
if(temp == front ){
printf("\n Queue OverFlow Occured"); return;
}
else if(front==-1 )
{
front=rear=0;
queue[rear]=item;
return;
}
else{
rear = (rear+1)%SIZE; // EDIT HERE
queue[rear]=item;
}
}
int dequeue()
{
int item = NULL;
if( front == rear) // modified condition
{
printf("\nQueue is empty. Dequeue not possible.\n"); }
else
{
item = queue[front];
queue[front] = NULL;
front++; // front must be incremented
if(front > rear) // front == rear means 1 element is left , it doesn't mean Queue is empty
{
front = -1;
rear = -1;
}
}
return(item);
}
void display()
{
int i;
if(front==-1)
printf("\n No elements to display"); else
{
printf("\n The queue elements are:\n "); for(i=front;i<=rear;i++)
{
}
}
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8Y29uaW8uaD4KI2RlZmluZSBTSVpFIDUKaW50IGZyb250ID0gLTE7CmludCByZWFyID0gLTE7CmludCBxdWV1ZVtTSVpFXTsKdm9pZCBlbnF1ZXVlKGludCBpdGVtKTsKaW50IGRlcXVldWUoKTsKdm9pZCBkaXNwbGF5KCk7CnZvaWQgbWFpbigpCnsKICAgIGludCBpdGVtLCBjaG9pY2UsIGNvbnQgPSAxOwogICAgY2xyc2NyKCk7CgogICAgd2hpbGUoY29udCA9PSAxKQogICAgewogICAgICAgIHByaW50ZigiXG4xLkVucXVldWUgaW50byBxdWV1ZS5cbiIpOwogICAgICAgIHByaW50ZigiXG4yLkRlcXVldWUgZnJvbSBxdWV1ZS5cbiIpOwogICAgICAgIHByaW50ZigiXG4zLmRpc3BsYXkgcXVlc3VlIGVsZW1lbnRzXG4iKTsKCiAgICAgICAgcHJpbnRmKCJcbkVudGVyIHlvdXIgY2hvaWNlOiAiKTsKICAgICAgICBzY2FuZigiJWQiLCZjaG9pY2UpOwoKICAgICAgICBzd2l0Y2goY2hvaWNlKQogICAgICAgIHsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgcHJpbnRmKCJcbkVudGVyIHRoZSB2YWx1ZSBvZiBpdGVtOiAiKTsKICAgICAgICAgICAgICAgIHNjYW5mKCIlZCIsJml0ZW0pOwogICAgICAgICAgICAgICAgZW5xdWV1ZShpdGVtKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgaXRlbSA9IGRlcXVldWUoKTsKICAgICAgICAgICAgICAgIGlmKGl0ZW0gIT0gTlVMTCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBwcmludGYoIlxuSXRlbSBkZXF1ZXVlZDogJWRcbiIsaXRlbSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgZGlzcGxheSgpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcHJpbnRmKCJcbkludmFsaWQgY2hvaWNlLlxuIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIHByaW50ZigiXG5EbyB5b3Ugd2FudCB0byBjb250aW51ZSAoMS8wKTogIik7CiAgICAgICAgc2NhbmYoIiVkIiwmY29udCk7CiAgICB9CgogICAgZ2V0Y2goKTsKfQoKCnZvaWQgZW5xdWV1ZShpbnQgaXRlbSkKewogICAgaW50IHRlbXAgPSAocmVhcisxKSVTSVpFOyAgICAvLyBFRElUIEhFUkUKICBpZih0ZW1wID09IGZyb250ICl7CiAgICBwcmludGYoIlxuIFF1ZXVlIE92ZXJGbG93IE9jY3VyZWQiKTsKICAgIHJldHVybjsKICB9CiAgZWxzZSBpZihmcm9udD09LTEgKQogIHsKICAgICAgZnJvbnQ9cmVhcj0wOwogICAgICBxdWV1ZVtyZWFyXT1pdGVtOwogICAgICByZXR1cm47CiAgfQogIGVsc2V7CiAgICAgICAgcmVhciA9IChyZWFyKzEpJVNJWkU7ICAgIC8vIEVESVQgSEVSRQogICAgICAgIHF1ZXVlW3JlYXJdPWl0ZW07CiAgIH0KfQppbnQgZGVxdWV1ZSgpCnsKICAgIGludCBpdGVtID0gTlVMTDsKICAgIGlmKCBmcm9udCA9PSByZWFyKSAgIC8vICAgICBtb2RpZmllZCBjb25kaXRpb24KICAgIHsKICAgICAgICBwcmludGYoIlxuUXVldWUgaXMgZW1wdHkuIERlcXVldWUgbm90IHBvc3NpYmxlLlxuIik7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgaXRlbSA9IHF1ZXVlW2Zyb250XTsKICAgICAgICBxdWV1ZVtmcm9udF0gPSBOVUxMOwogICAgICAgIGZyb250Kys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbnQgbXVzdCBiZSBpbmNyZW1lbnRlZAogICAgICAgIGlmKGZyb250ID4gcmVhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9udCA9PSByZWFyIG1lYW5zICAxIGVsZW1lbnQgaXMgbGVmdCAsIGl0IGRvZXNuJ3QgbWVhbiBRdWV1ZSBpcyBlbXB0eQogICAgICAgIHsKICAgICAgICAgICAgZnJvbnQgPSAtMTsKICAgICAgICAgICAgcmVhciA9IC0xOwogICAgICAgIH0KICAgfQogICAgcmV0dXJuKGl0ZW0pOwp9CnZvaWQgZGlzcGxheSgpCnsKICAgIGludCBpOwogICAgaWYoZnJvbnQ9PS0xKQogICAgICBwcmludGYoIlxuIE5vIGVsZW1lbnRzIHRvIGRpc3BsYXkiKTsKICAgIGVsc2UKICAgIHsKICAgICAgcHJpbnRmKCJcbiBUaGUgcXVldWUgZWxlbWVudHMgYXJlOlxuICIpOwogICAgICBmb3IoaT1mcm9udDtpPD1yZWFyO2krKykKICAgICAgewogICAgICAgICAgcHJpbnRmKCIlZFx0IixxdWV1ZVtpXSk7CiAgICAgIH0KICAgIH0KfQo=