/
queue.c
66 lines (63 loc) · 1.25 KB
/
queue.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
void initialise_queue(int *sq, int *eq)
{
*sq = *eq = -1;
}
void add_to_queue(int *queue, int *sq, int *eq, int MAX, int data)
{
if (*sq == (-1) && *eq == (-1))
*sq = *eq = 1, queue[*eq] = data;
else
{
int t = (*eq + 1) % (MAX - 1);
if (t == 0)
t = 1;
queue[t] = data;
*eq = t;
}
}
int is_empty_queue(int *sq, int *eq)
{
if (*sq == (-1) && *eq == (-1))
return 1;
else
return 0;
}
void pop_queue(int *sq, int *eq, int MAX)
{
int t = (*sq + 1) % (MAX - 1);
if (t == 0)
t = 1;
*sq = t;
if (*sq > *eq)
*sq = *eq = -1;
}
int queue_front(int *queue, int *sq)
{
return queue[*sq];
}
void print(int *a, int *sq, int *eq)
{
if(!is_empty_queue(&sq, &eq)){
int i;
for (i = *sq; i <= *eq; ++i)
{
printf("%d ", a[i]);
}
printf("\n");
} else {
printf("empty list");
}
}
int main ()
{
int sq, eq, q[50], Max = 50;
initialise_queue(&sq, &eq);
add_to_queue(q, &sq, &eq, Max, 1);
add_to_queue(q, &sq, &eq, Max, 2);
add_to_queue(q, &sq, &eq, Max, 3);
add_to_queue(q, &sq, &eq, Max, 4);
print(q, &sq, &eq);
pop_queue(&sq, &eq, Max);
print(q, &sq, &eq);
printf("\n%d", queue_front(q, &sq));
}