-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfile.c
More file actions
91 lines (76 loc) · 2.3 KB
/
Copy pathfile.c
File metadata and controls
91 lines (76 loc) · 2.3 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
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
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MAX_SIZE 100 // Maximum size of the queue
// Define the queue structure
struct Queue {
int items[MAX_SIZE];
int front;
int rear;
};
// Function to initialize the queue
void initializeQueue(struct Queue* queue) {
queue->front = -1;
queue->rear = -1;
}
// Function to check if the queue is empty
bool isEmpty(struct Queue* queue) {
return queue->front == -1;
}
// Function to check if the queue is full
bool isFull(struct Queue* queue) {
return (queue->rear + 1) % MAX_SIZE == queue->front;
}
// Function to enqueue an element
void enqueue(struct Queue* queue, int value) {
if (isFull(queue)) {
printf("Queue Overflow! Cannot enqueue %d.\n", value);
} else {
if (isEmpty(queue)) {
queue->front = 0;
}
queue->rear = (queue->rear + 1) % MAX_SIZE;
queue->items[queue->rear] = value;
printf("Enqueued %d to the queue.\n", value);
}
}
// Function to dequeue an element
int dequeue(struct Queue* queue) {
if (isEmpty(queue)) {
printf("Queue Underflow! Cannot dequeue from an empty queue.\n");
return -1; // Return an invalid value
} else {
int value = queue->items[queue->front];
if (queue->front == queue->rear) {
// Reset the queue after the last element is dequeued
queue->front = -1;
queue->rear = -1;
} else {
queue->front = (queue->front + 1) % MAX_SIZE;
}
printf("Dequeued %d from the queue.\n", value);
return value;
}
}
// Function to peek at the front element
int peek(struct Queue* queue) {
if (isEmpty(queue)) {
printf("Queue is empty. No front element.\n");
return -1; // Return an invalid value
} else {
return queue->items[queue->front];
}
}
int main() {
struct Queue queue;
initializeQueue(&queue);
enqueue(&queue, 10);
enqueue(&queue, 20);
enqueue(&queue, 30);
printf("Front element: %d\n", peek(&queue));
dequeue(&queue);
dequeue(&queue);
printf("Front element after dequeues: %d\n", peek(&queue));
dequeue(&queue); // Try to dequeue from an empty queue
return 0;
}