数据结构银行业务队列简单模拟实验,用c语言完整代码
时间: 2024-10-12 19:04:46 浏览: 21
数据结构中的银行业务队列可以看作是一种先进先出(First-In-First-Out,FIFO)的数据结构,常用于处理客户请求,例如ATM取款、存款等操作。这里我们简单模拟一个单线程的银行队列,使用C语言实现。
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int request_id;
char operation[10]; // 存或取
int amount; // 操作金额
struct Node *next;
} Node;
// 队列节点
Node* create_node(int id, char op, int am) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->request_id = id;
strcpy(newNode->operation, op);
newNode->amount = am;
newNode->next = NULL;
return newNode;
}
// 初始化空队列
Node* initialize_queue() {
return NULL;
}
// 插入新请求到队列尾部
void enqueue(Node** queue, Node* new_node) {
if (*queue == NULL) {
*queue = new_node;
} else {
Node* temp = *queue;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = new_node;
}
}
// 从队列头部取出请求并处理
void dequeue(Node** queue) {
if (*queue == NULL) {
printf("Queue is empty.\n");
return;
}
Node* temp = *queue;
Node* removed = *queue;
*queue = (*queue)->next;
// 打印请求信息并处理(这里只是一个示例)
printf("Processing request %d: Operation - %s, Amount - %d\n",
removed->request_id, removed->operation, removed->amount);
free(removed); // 释放内存
}
// 主函数
int main() {
Node* queue = initialize_queue();
// 添加一些模拟请求
enqueue(&queue, create_node(1, "取", 500));
enqueue(&queue, create_node(2, "存", 1000));
enqueue(&queue, create_node(3, "取", 200));
// 逐一处理请求
while (queue != NULL) {
dequeue(&queue);
}
return 0;
}
```
这个简单的模拟展示了如何创建一个银行队列,添加请求(入队),以及处理请求(出队)。注意这只是一个基本的实现,实际应用中可能需要考虑并发控制、错误处理等因素。