银行排队系统c语言
时间: 2023-12-03 20:45:20 浏览: 30
银行排队系统的实现需要用到数据结构和算法。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 100
typedef struct {
int id;
int arrival_time;
} Customer;
typedef struct {
Customer data[MAX_QUEUE_SIZE];
int front;
int rear;
} Queue;
void init_queue(Queue *q) {
q->front = 0;
q->rear = 0;
}
int is_empty(Queue *q) {
return q->front == q->rear;
}
int is_full(Queue *q) {
return (q->rear + 1) % MAX_QUEUE_SIZE == q->front;
}
void enqueue(Queue *q, Customer customer) {
if (is_full(q)) {
printf("Queue is full.\n");
exit(1);
}
q->data[q->rear] = customer;
q->rear = (q->rear + 1) % MAX_QUEUE_SIZE;
}
Customer dequeue(Queue *q) {
if (is_empty(q)) {
printf("Queue is empty.\n");
exit(1);
}
Customer customer = q->data[q->front];
q->front = (q->front + 1) % MAX_QUEUE_SIZE;
return customer;
}
void print_queue(Queue *q) {
if (is_empty(q)) {
printf("Queue is empty.\n");
return;
}
printf("Queue contents:\n");
int i = q->front;
while (i != q->rear) {
printf("Customer %d arrived at %d\n", q->data[i].id, q->data[i].arrival_time);
i = (i + 1) % MAX_QUEUE_SIZE;
}
}
int main() {
Queue q;
init_queue(&q);
// Enqueue some customers
Customer c1 = {1, 10};
enqueue(&q, c1);
Customer c2 = {2, 5};
enqueue(&q, c2);
Customer c3 = {3, 20};
enqueue(&q, c3);
// Dequeue customers and print queue contents
Customer c = dequeue(&q);
printf("Customer %d arrived at %d.\n", c.id, c.arrival_time);
print_queue(&q);
c = dequeue(&q);
printf("Customer %d arrived at %d.\n", c.id, c.arrival_time);
print_queue(&q);
c = dequeue(&q);
printf("Customer %d arrived at %d.\n", c.id, c.arrival_time);
print_queue(&q);
return 0;
}
```
该示例使用了一个循环队列来存储客户。每个客户由其ID和到达时间表示。enqueue() 和 dequeue() 函数分别用于将客户添加到队列中和从队列中删除客户。print_queue() 函数用于打印当前队列中的客户。该示例只是一个简单的实现,实际的银行排队系统需要更复杂的逻辑和算法。