排队管理系统c语言
时间: 2023-07-03 07:10:16 浏览: 91
下面是一个简单的排队管理系统的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
struct Customer {
int id;
int service_time;
struct Customer *next;
};
typedef struct {
struct Customer *front;
struct Customer *rear;
} Queue;
void initQueue(Queue *q) {
q->front = q->rear = NULL;
}
int isEmpty(Queue *q) {
return q->front == NULL;
}
void enqueue(Queue *q, int id, int service_time) {
struct Customer *customer = (struct Customer *) malloc(sizeof(struct Customer));
customer->id = id;
customer->service_time = service_time;
customer->next = NULL;
if (q->rear == NULL) {
q->front = q->rear = customer;
} else {
q->rear->next = customer;
q->rear = customer;
}
}
void dequeue(Queue *q) {
if (isEmpty(q)) {
return;
}
struct Customer *customer = q->front;
q->front = q->front->next;
if (q->front == NULL) {
q->rear = NULL;
}
printf("顾客 %d 开始服务,服务时间为 %d\n", customer->id, customer->service_time);
free(customer);
}
int main() {
Queue q;
initQueue(&q);
int num_customers;
printf("请输入顾客数量:\n");
scanf("%d", &num_customers);
for (int i = 1; i <= num_customers; i++) {
int service_time;
printf("请输入顾客 %d 的服务时间:\n", i);
scanf("%d", &service_time);
enqueue(&q, i, service_time);
}
printf("当前窗口空闲\n");
while (!isEmpty(&q)) {
dequeue(&q);
}
printf("所有顾客服务结束\n");
return 0;
}
```
在这个示例中,使用了一个链表来实现队列。顾客被定义为一个结构体,包含顾客的编号、需要的服务时间和指向下一个顾客的指针。使用 `initQueue` 函数初始化队列,`isEmpty` 函数判断队列是否为空,`enqueue` 函数将顾客加入队列,`dequeue` 函数从队列中取出顾客并开始服务。
在 `main` 函数中,先使用 `scanf` 函数获取顾客数量,然后使用 `enqueue` 函数将每个顾客加入队列,接着使用 `dequeue` 函数依次处理每个顾客。最终输出所有顾客服务结束的提示。
这只是一个简单的示例,实际的排队管理系统可能需要更复杂的逻辑和功能。
阅读全文