C语言环形队列实现超市收银
时间: 2023-06-12 20:04:06 浏览: 113
C语言环形队列通用模块
好的,下面是一个简单的 C 语言环形队列实现超市收银的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 5 // 队列的最大容量
// 定义队列结构体
struct queue {
int data[MAX_SIZE]; // 存储队列元素的数组
int front; // 队头指针
int rear; // 队尾指针
};
// 初始化队列
void init_queue(struct queue *q) {
q->front = q->rear = 0;
}
// 判断队列是否为空
int is_empty(struct queue *q) {
return q->front == q->rear;
}
// 判断队列是否已满
int is_full(struct queue *q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
// 入队
void enqueue(struct queue *q, int value) {
if (!is_full(q)) {
q->data[q->rear] = value;
q->rear = (q->rear + 1) % MAX_SIZE;
} else {
printf("队列已满,无法入队!\n");
}
}
// 出队
int dequeue(struct queue *q) {
int value = -1;
if (!is_empty(q)) {
value = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
} else {
printf("队列为空,无法出队!\n");
}
return value;
}
// 输出队列元素
void print_queue(struct queue *q) {
if (!is_empty(q)) {
int i = q->front;
while (i != q->rear) {
printf("%d ", q->data[i]);
i = (i + 1) % MAX_SIZE;
}
printf("\n");
} else {
printf("队列为空!\n");
}
}
int main() {
struct queue q;
init_queue(&q); // 初始化队列
// 模拟顾客排队
enqueue(&q, 10);
enqueue(&q, 20);
enqueue(&q, 30);
print_queue(&q); // 输出队列元素
// 模拟收银员处理顾客
printf("收银员开始处理顾客:\n");
int total_money = 0;
while (!is_empty(&q)) {
int money = dequeue(&q); // 弹出队首元素
printf("收银员处理顾客,金额:%d\n", money);
total_money += money;
}
printf("收银员处理完所有顾客,总金额:%d\n", total_money);
return 0;
}
```
运行结果:
```
10 20 30
收银员开始处理顾客:
收银员处理顾客,金额:10
收银员处理顾客,金额:20
收银员处理顾客,金额:30
收银员处理完所有顾客,总金额:60
```
以上代码只是一个简单的示例,实际应用中可能需要更复杂的功能,例如计算找零、打印小票等。
阅读全文