Queues
Queues
h>
#include <stdlib.h>
#include <string.h>
// Queue Structure
typedef struct {
Customer queue[MAX];
int front, rear;
} TicketQueue;
if (isEmpty(q)) {
q->front = 0;
}
q->rear++;
strcpy(q->queue[q->rear].name, name);
q->queue[q->rear].ticketNumber = ticketNumber;
if (q->front == q->rear) {
// Last customer served
initializeQueue(q);
} else {
q->front++;
}
}
printf("\nCustomers in Queue:\n");
for (int i = q->front; i <= q->rear; i++) {
printf("%d. %s (Ticket No: %d)\n", i + 1, q-
>queue[i].name, q->queue[i].ticketNumber);
}
}
int main() {
TicketQueue queue;
initializeQueue(&queue);
while (1) {
printf("\n==== Ticket Booking System ====\n");
printf("1. Book a Ticket\n");
printf("2. Serve a Customer\n");
printf("3. View Queue\n");
printf("4. Exit\n");
printf("Enter choice: ");
scanf("%d", &choice);
getchar(); // Consume newline character
switch (choice) {
case 1:
if (!isFull(&queue)) {
printf("Enter Customer Name: ");
fgets(name, sizeof(name), stdin);
name[strcspn(name, "\n")] = '\0'; // Remove
newline
enqueue(&queue, name, ticketNumber++);
} else {
printf("\nNo more tickets available!\n");
}
break;
case 2:
dequeue(&queue);
break;
case 3:
displayQueue(&queue);
break;
case 4:
printf("\nThank you for using the Ticket Booking
System!\n");
exit(0);
default:
printf("\nInvalid choice! Please enter a valid
option.\n");
}
}
return 0;
}