-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqueue.c
More file actions
65 lines (64 loc) · 1.58 KB
/
Copy pathqueue.c
File metadata and controls
65 lines (64 loc) · 1.58 KB
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
#include <stdio.h>
#include <stdlib.h>
struct Queue{
int *array;
int capacity;
int no_elements;
};
typedef struct Queue Queue; //Creating a nick_name for struct Queue
Queue new_queue(int capacity){
Queue queue;
queue.array = malloc(sizeof(int) * capacity); // allocating our array to the heap //4
queue.capacity = capacity;
queue.no_elements = 0;
return queue;
}
void enqueue(Queue *queue,int data){
if(queue->no_elements >= queue->capacity){
printf("The queue is full!\n");
return;
}
queue->array[queue->no_elements] = data;
queue->no_elements += 1;
}
void dequeue(Queue *queue){
if(queue->no_elements <= 0){
printf("Queue is empty!\n");
return;
}
for(int i = 1; i < queue->no_elements;i++){
queue->array[i-1] = queue->array[i]; //removes an element
}
queue->capacity -= 1; //3
}
int front(Queue queue){
if(queue.no_elements <= 0){
printf("Queue is empty!");
return EXIT_FAILURE;
}
return queue.array[0];
}
int back(Queue queue){
if(queue.no_elements <= 0){
perror("Queue is empty!\n");
return EXIT_FAILURE;
}
return queue.array[queue.no_elements - 1];
}
void print_front_back(Queue q){
printf("Front = %d, back=%d\n",front(q),back(q));
}
int main(){
Queue q = new_queue(5);
dequeue(&q);//this is also illegal.
enqueue(&q,0);
enqueue(&q,1);
enqueue(&q,2);
enqueue(&q,3);
enqueue(&q,4);
enqueue(&q,5);//this exceeds the capacity
print_front_back(q);
dequeue(&q);
print_front_back(q);
return 0;
}