#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 5
void insert(int q[], int *f, int *r)
{
if(*f == (*r+1)%SIZE)
return;
*r=(*r+1)%SIZE;
printf("Enter the data\n");
scanf("%d",&q[*r]);
if(*f == -1)
*f= 0;
}
void del(int *f, int *r)
{
if(*f== -1)
return;
if(*f == *r)
*f = *r = -1;
else
*f= (*f+1)% SIZE;
}
void display(int q[], int *f, int *r)
{
int i;
if(*f== -1)
printf("circular queue is empty\n");
else
{
for(i= *f; i!= *r; i=(i+1)%SIZE)
printf("%d", q[i]);
if(*f == (*r+1)%SIZE)
printf("circular queue is full\n");
}
}
void main()
{
int ch, q[SIZE],f = -1,r= -1;
while(1)
{
display(q,&f,&r);
printf(" 1. Insert\n 2. Delete\n 3.quit\n");
printf("Enter your choice\n");
scanf("%d",&ch);
switch(ch)
{
case 1 : insert(q,&f,&r);break;
case 2 : del(&f,&r);break;
default : return;
}
}
This is my program which uses structures..a better way :)
#include<stdio.h>
#define size 3
struct queue
{
int front,rear;
int array[size];
}s;
int count=0,j;
int qfull()
{
if(count == size)
return 1;
return 0;
}
int qempty()
{
if(count == 0)
return 1;
return 0;
}
void insert_rear(int x)
{
s.rear=(s.rear+1)%size;
s.array[s.rear]=x;
count++;
return;
}
int del_front()
{
int i;
i=s.array[s.front];
s.front=(s.front+1)%size;
count--;
printf("The element deleted is %d\n", i);
}
void display()
{
int i,j=s.front;
if(qempty())
printf("QUEUE IS EMPTY\n");
else
{
printf("The contents of the queue are:\n");
for(i=0;i<count;i++)
{
printf("%d\n",s.array[j]);
j=(j+1)%size;
}
}
}
main()
{
s.rear= size-1;s.front=0;
int ch,x,c;
while(1)
{
printf("1.Insert\n2.Delete\n3.Display\n4.Exit\n");
printf("Enter your choice\n");
scanf("%d",&ch);
switch(ch)
{
case 1 : if(qfull())
{
printf("OVERFLOW IN QUEUE\n");
}
else
{
printf("Enter the element to be inserted\n");
scanf("%d",&x);
insert_rear(x);
}
break;
case 2 : if(qempty())
{
printf("UNDERFLOW\n");
}
else
del_front();
break;
case 3 : display();
break;
default : return;
}
}
}
#include<stdlib.h>
#include<string.h>
#define SIZE 5
void insert(int q[], int *f, int *r)
{
if(*f == (*r+1)%SIZE)
return;
*r=(*r+1)%SIZE;
printf("Enter the data\n");
scanf("%d",&q[*r]);
if(*f == -1)
*f= 0;
}
void del(int *f, int *r)
{
if(*f== -1)
return;
if(*f == *r)
*f = *r = -1;
else
*f= (*f+1)% SIZE;
}
void display(int q[], int *f, int *r)
{
int i;
if(*f== -1)
printf("circular queue is empty\n");
else
{
for(i= *f; i!= *r; i=(i+1)%SIZE)
printf("%d", q[i]);
if(*f == (*r+1)%SIZE)
printf("circular queue is full\n");
}
}
void main()
{
int ch, q[SIZE],f = -1,r= -1;
while(1)
{
display(q,&f,&r);
printf(" 1. Insert\n 2. Delete\n 3.quit\n");
printf("Enter your choice\n");
scanf("%d",&ch);
switch(ch)
{
case 1 : insert(q,&f,&r);break;
case 2 : del(&f,&r);break;
default : return;
}
}
This is my program which uses structures..a better way :)
#include<stdio.h>
#define size 3
struct queue
{
int front,rear;
int array[size];
}s;
int count=0,j;
int qfull()
{
if(count == size)
return 1;
return 0;
}
int qempty()
{
if(count == 0)
return 1;
return 0;
}
void insert_rear(int x)
{
s.rear=(s.rear+1)%size;
s.array[s.rear]=x;
count++;
return;
}
int del_front()
{
int i;
i=s.array[s.front];
s.front=(s.front+1)%size;
count--;
printf("The element deleted is %d\n", i);
}
void display()
{
int i,j=s.front;
if(qempty())
printf("QUEUE IS EMPTY\n");
else
{
printf("The contents of the queue are:\n");
for(i=0;i<count;i++)
{
printf("%d\n",s.array[j]);
j=(j+1)%size;
}
}
}
main()
{
s.rear= size-1;s.front=0;
int ch,x,c;
while(1)
{
printf("1.Insert\n2.Delete\n3.Display\n4.Exit\n");
printf("Enter your choice\n");
scanf("%d",&ch);
switch(ch)
{
case 1 : if(qfull())
{
printf("OVERFLOW IN QUEUE\n");
}
else
{
printf("Enter the element to be inserted\n");
scanf("%d",&x);
insert_rear(x);
}
break;
case 2 : if(qempty())
{
printf("UNDERFLOW\n");
}
else
del_front();
break;
case 3 : display();
break;
default : return;
}
}
}
No comments:
Post a Comment