用c语言编写一个银行业务队列简单模型的代码
时间: 2024-10-18 07:20:03 浏览: 36
在C语言中,我们可以创建一个简单的银行业务队列(Queue)模型,通常会使用数组或者链表实现。这里我们选择数组作为示例,使用循环队列(Circular Queue)来模拟,因为数组提供了一定的空间效率。以下是基础的队列操作(入队Enqueue、出队Dequeue)以及查看队头元素Peek的基本代码:
```c
#include <stdio.h>
#define QUEUE_SIZE 5
typedef struct {
int data[QUEUE_SIZE];
int front; // 队首索引
int rear; // 队尾索引
} Queue;
// 初始化队列
void init_queue(Queue* queue) {
queue->front = queue->rear = -1;
}
// 入队操作
bool enqueue(Queue* queue, int value) {
if ((queue->rear + 1) % QUEUE_SIZE == queue->front) { // 队满
printf("Queue is full.\n");
return false;
} else {
queue->rear = (queue->rear + 1) % QUEUE_SIZE; // 循环更新队尾
queue->data[queue->rear] = value;
if (queue->front == -1) queue->front = 0; // 如果队为空,设置队首
return true;
}
}
// 出队操作
int dequeue(Queue* queue) {
if (queue->front == -1) { // 队空
printf("Queue is empty.\n");
return -1; // 返回错误代码
} else {
int removed_value = queue->data[queue->front]; // 获取并移除队首元素
queue->front = (queue->front + 1) % QUEUE_SIZE; // 更新队首
if (queue->front == queue->rear) { // 队列变空
queue->front = queue->rear = -1;
}
return removed_value;
}
}
// 查看队头元素
int peek(Queue* queue) {
if (queue->front == -1) {
printf("Queue is empty.\n");
return -1;
} else {
return queue->data[queue->front];
}
}
int main() {
Queue bank_queue;
init_queue(&bank_queue);
enqueue(&bank_queue, 100); // 示例:存入100元
enqueue(&bank_queue, 200);
enqueue(&bank_queue, 300);
while (!enqueue(&bank_queue, 400)); // 示例:尝试存入超出容量的钱
printf("队头元素: %d\n", peek(&bank_queue));
dequeue(&bank_queue); // 取款100元
return 0;
}
```
阅读全文