银行排队系统c语言
时间: 2023-12-03 09:44:34 浏览: 42
银行排队系统可以使用C语言来实现,以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 100
typedef struct {
int customer_id;
int service_time;
} Customer;
typedef struct {
Customer* data[MAX_QUEUE_SIZE];
int front;
int rear;
} Queue;
void init_queue(Queue* queue) {
queue->front = queue->rear = 0;
}
int is_empty_queue(Queue* queue) {
return queue->front == queue->rear;
}
int is_full_queue(Queue* queue) {
return (queue->rear + 1) % MAX_QUEUE_SIZE == queue->front;
}
void enqueue(Queue* queue, Customer* customer) {
if (is_full_queue(queue)) {
printf("Queue is full!\n");
return;
}
queue->data[queue->rear] = customer;
queue->rear = (queue->rear + 1) % MAX_QUEUE_SIZE;
}
Customer* dequeue(Queue* queue) {
if (is_empty_queue(queue)) {
printf("Queue is empty!\n");
return NULL;
}
Customer* customer = queue->data[queue->front];
queue->front = (queue->front + 1) % MAX_QUEUE_SIZE;
return customer;
}
void display_queue(Queue* queue) {
if (is_empty_queue(queue)) {
printf("Queue is empty!\n");
return;
}
printf("Customers in queue:\n");
for (int i = queue->front; i != queue->rear; i = (i + 1) % MAX_QUEUE_SIZE) {
printf("Customer %d, service time: %d\n", queue->data[i]->customer_id, queue->data[i]->service_time);
}
}
int main() {
Queue queue;
init_queue(&queue);
// Enqueue customers
Customer customer1 = {1, 5};
enqueue(&queue, &customer1);
Customer customer2 = {2, 3};
enqueue(&queue, &customer2);
Customer customer3 = {3, 2};
enqueue(&queue, &customer3);
// Display queue
display_queue(&queue);
// Serve customers
while (!is_empty_queue(&queue)) {
Customer* customer = dequeue(&queue);
printf("Serving customer %d...\n", customer->customer_id);
// Do something with customer
free(customer);
}
return 0;
}
```
在这个示例代码中,我们使用了一个`Queue`结构体来表示队列,其中包含一个指向`Customer`结构体的指针数组,以及队列的前后指针。我们使用`init_queue`函数来初始化队列,`is_empty_queue`和`is_full_queue`函数来判断队列是否为空或已满,`enqueue`函数来向队列中添加顾客,`dequeue`函数来从队列中取出顾客,`display_queue`函数来展示当前在队列中的顾客。
在主函数中,我们首先初始化了队列,然后向队列中添加了三个顾客。接着展示了当前在队列中的顾客,然后循环取出队列中的顾客并进行服务,直到队列为空。
需要注意的是,我们使用了`malloc`函数来动态分配`Customer`结构体的内存空间,这是为了在服务顾客结束后能够释放该空间。因为在实际的银行排队系统中,一个顾客往往不仅仅只有ID和服务时间这两个属性,还有很多其他的信息,因此我们需要根据实际需求来设计`Customer`结构体的属性。
阅读全文