写一份储存管理功能的设计实现c语言代码需要进行先进先出算法
时间: 2024-09-13 22:15:26 浏览: 34
在C语言中,设计实现一个基于先进先出(FIFO)原则的数据结构,如栈(Stack),可以用于模拟简单的存储管理功能。以下是一个基本的FIFO队列(使用数组作为底层数据结构)的实现:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct Queue {
int items[MAX_SIZE];
int front; // 栈顶指针
int rear; // 栈底指针
} Queue;
// 初始化队列
void initialize(Queue* queue) {
queue->front = -1;
queue->rear = -1;
}
// 判断队列是否为空
int is_empty(Queue* queue) {
return queue->front == -1;
}
// 判断队列是否已满
int is_full(Queue* queue) {
return (queue->rear + 1) % MAX_SIZE == queue->front;
}
// 入队操作(后进)
void enqueue(Queue* queue, int value) {
if (is_full(queue)) {
printf("Queue is full.\n");
return;
}
if (is_empty(queue)) {
queue->front = 0;
} else {
queue->rear = (queue->rear + 1) % MAX_SIZE;
}
queue->items[queue->rear] = value;
printf("Enqueued: %d\n", value);
}
// 出队操作(先进)
int dequeue(Queue* queue) {
if (is_empty(queue)) {
printf("Queue is empty.\n");
return -1;
}
int value = queue->items[queue->front];
if (queue->front == queue->rear) {
queue->front = queue->rear = -1;
} else {
queue->front = (queue->front + 1) % MAX_SIZE;
}
printf("Dequeued: %d\n", value);
return value;
}
// 示例使用
int main() {
Queue q;
initialize(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
dequeue(&q);
dequeue(&q);
return 0;
}
```