-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDE-QueueArray.c
137 lines (112 loc) · 1.7 KB
/
DE-QueueArray.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// DOUBLE ENDED QUEUE IMPLEMENTATION USING ARRAY
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#define CAPACITY 10
int f = -1;
int r = -1;
int queue[CAPACITY];
bool isEmpty()
{
if (f == -1)
{
return true;
}
return false;
}
bool isFull()
{
if (r == CAPACITY - 1)
{
return true;
}
return false;
}
void enQueueAtEnd(int data)
{
if (isFull())
{
printf("Queue is Full");
return;
}
if (f == -1)
{
f++;
}
queue[++r] = data;
}
void enQueueAtBeg(int data)
{
if (isEmpty() || isFull())
{
enQueueAtEnd(data);
return;
}
for (int i = r; i >= f; i--)
{
queue[i + 1] = queue[i];
}
r++;
queue[f] = data;
}
void deQueueAtEnd()
{
if (isEmpty())
{
printf("Queue is Empty");
return;
}
r--;
}
void deQueueAtBeg()
{
if (isEmpty())
{
printf("Queue is Empty");
return;
}
for (int i = f + 1; i <= r; i++)
{
queue[i - 1] = queue[i];
}
r--;
}
int FrontPeek()
{
if (isEmpty())
{
printf("Queue is Empty");
exit(0);
}
return queue[f];
}
int RearPeek()
{
if (isEmpty())
{
printf("Queue is Empty");
exit(0);
}
return queue[r];
}
void printQueue()
{
for (int i = f; i <= r; i++)
{
printf("%d ", queue[i]);
}
printf("\n");
}
void main()
{
enQueueAtBeg(5);
enQueueAtEnd(15);
enQueueAtEnd(20);
enQueueAtBeg(25);
printQueue();
deQueueAtEnd();
deQueueAtBeg();
printQueue();
printf("Element at first : %d\n", FrontPeek());
printf("Element at last : %d\n", RearPeek());
}