#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_FILES 10
#define FILENAME_LENGTH 100
typedef struct
{
char filenames[MAX_FILES][FILENAME_LENGTH];
int front;
int rear;
int count;
} CircularQueue;
//初始化队列
void initializeQueue(CircularQueue *queue)
{
queue->front = 0;
queue->rear = -1;
queue->count = 0;
}
//队列是否为满
int isQueueFull(CircularQueue *queue)
{
return (queue->count == MAX_FILES);
}
//队列是否为空
int isQueueEmpty(CircularQueue *queue)
{
return (queue->count == 0);
}
//入队
void enqueue(CircularQueue *queue, const char *filename)
{
if (!isQueueFull(queue))
{
queue->rear = (queue->rear + 1) % MAX_FILES;
strcpy(queue->filenames[queue->rear], filename);
queue->count++;
}
else
{
printf("Queue is full. File %s not added.\n", filename);
}
}
//出队
void dequeue(CircularQueue *queue)
{
if (!isQueueEmpty(queue))
{
printf("Dequeueing file: %s\n", queue->filenames[queue->front]);
queue->front = (queue->front + 1) % MAX_FILES;
queue->count--;
}
else
{
printf("Queue is empty. No files to dequeue.\n");
}
}
//打印队列
void printQueue(CircularQueue *queue)
{
int i;
printf("Current files in queue:\n");
for (i = 0; i < queue->count; i++)
{
printf("%s\n", queue->filenames[(queue->front + i) % MAX_FILES]);
}
}
int main()
{
CircularQueue fileQueue;
initializeQueue(&fileQueue);
// 模拟文件写入过程
enqueue(&fileQueue, "file1.txt");
enqueue(&fileQueue, "file2.txt");
enqueue(&fileQueue, "file3.txt");
printQueue(&fileQueue);
// 当队列已满时继续写入文件
enqueue(&fileQueue, "file4.txt");
printQueue(&fileQueue);
// 模拟文件覆盖过程
dequeue(&fileQueue);
enqueue(&fileQueue, "file5.txt");
printQueue(&fileQueue);
return 0;
}
多文件循环覆盖存储
最新推荐文章于 2025-04-08 16:23:55 发布