-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcircularqueue.c
90 lines (90 loc) · 1.4 KB
/
circularqueue.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include<stdio.h>
#define SIZE 5
int items[SIZE];
int front =-1, rear= -1;
// check the queue is full or not
int isFull()
{
if((front == rear+1) || (front == 0 && rear == SIZE -1))
return 1;
return 0;
}
// check the queue is empty or not
int isEmpty()
{
if(front == -1)
return 1;
return 0;
}
// Adding an element
void enQueue(int element)
{
if (isFull())
printf("\n Queue is full!! \n");
else{
if (front==-1) front =0;
rear = (rear + 1) % SIZE;
items[rear] = element;
printf("\n Inserted -> %d", element);
}
}
// Removing an element
int deQueue()
{
int element;
if(isEmpty())
{
printf("\n Queue is Empty!! \n");
return (-1);
}
else{
element= items[front];
if(front == rear)
{
front= -1;
rear= -1;
}
else{
front= (front +1)%SIZE;
}
printf("\n Deleted element -> %d \n", element);
return (element);
}
}
// display the queue
void display(){
int i;
if(isEmpty())
printf("\n Empty Queue \n");
else
{
printf("\n Front -> %d", front);
printf("\n items -> ");
for(i=front; i!=rear; i=(i+1)%SIZE)
{
printf("%d", items[i]);
}
printf("%d", items[i]);
printf("\n Rear -> %d \n", rear);
}
}
int main()
{
//Fails because front = -1
deQueue();
enQueue(5);
enQueue(6);
enQueue(7);
enQueue(8);
enQueue(9);
//Fails because front = 0 && rear == SIZE -1
enQueue(1);
display();
deQueue();
display();
enQueue(0);
display();
//Fails because front = rear+1
enQueue(2);
return 0;
}