-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDrive_through.c
78 lines (64 loc) · 1.88 KB
/
Drive_through.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
#include <stdio.h>
#include <stdlib.h>
#define MAX_ORDER_SIZE 100
struct Queue {
int front, rear, size;
unsigned capacity;
char** orders;
};
struct Queue* createQueue(unsigned capacity) {
struct Queue* queue = (struct Queue*)malloc(sizeof(struct Queue));
queue->capacity = capacity;
queue->front = queue->size = 0;
queue->rear = capacity - 1;
queue->orders = (char**)malloc(capacity * sizeof(char*));
return queue;
}
int isFull(struct Queue* queue) {
return (queue->size == queue->capacity);
}
int isEmpty(struct Queue* queue) {
return (queue->size == 0);
}
void enqueue(struct Queue* queue, char* order) {
if (isFull(queue)) {
printf("Queue is full. Cannot enqueue order: %s\n", order);
return;
}
queue->rear = (queue->rear + 1) % queue->capacity;
queue->orders[queue->rear] = order;
queue->size++;
printf("Order %s added to the queue.\n", order);
}
char* dequeue(struct Queue* queue) {
if (isEmpty(queue)) {
printf("Queue is empty. Cannot dequeue.\n");
return NULL;
}
char* order = queue->orders[queue->front];
queue->front = (queue->front + 1) % queue->capacity;
queue->size--;
return order;
}
void processOrders(struct Queue* queue) {
while (!isEmpty(queue)) {
char* order = dequeue(queue);
printf("Processing order: %s\n", order);
// Add your code here to process the order (e.g., prepare the food, calculate the total, etc.)
printf("Order %s processed.\n", order);
free(order);
}
}
void destroyQueue(struct Queue* queue) {
free(queue->orders);
free(queue);
}
int main() {
struct Queue* orderQueue = createQueue(MAX_ORDER_SIZE);
enqueue(orderQueue, "Cheeseburger");
enqueue(orderQueue, "French Fries");
enqueue(orderQueue, "Soda");
processOrders(orderQueue);
destroyQueue(orderQueue);
return 0;
}