队列:先进先出,使用数组进行模拟实现
.h 文件
#ifndef QUEUE_H
#define QUEUE_H
#define MAX_SIZE 1024
//定义队列结构体
typedef struct SEQQUEUE
{
void* data[MAX_SIZE];
int size;
}SeqQueue;
//队列初始化
SeqQueue* Init_SeqQueue();
//插入,尾部
void Insert_SeqQueue(SeqQueue* queue,void* data);
//删除,头部
void Remove_SeqQueue(SeqQueue* queue);
//返回队头元素
void* Front_SeqQueue(SeqQueue* queue);
//返回队尾元素
void* Back_SeqQueue(SeqQueue* queue);
//返回队列大小
int Size_SeqQueue(SeqQueue* queue);
//清空队列
void Clear_SeqQueue(SeqQueue* queue);
//释放内存
void FreeSpace_SeqQueue(SeqQueue* queue);
#endif
.c 文件
#include <stdio.h>
#include <stdlib.h>
//队列初始化
SeqQueue* Init_SeqQueue()
{
SeqQueue* queue = (SeqQueue*)malloc(sizeof(SeqQueue));
for(int i = 0; i < MAX_SIZE; i++)
{
queue->data[i] = NULL;
}
queue->size = 0;
return queue;
}
//插入,尾部
void Insert_SeqQueue(SeqQueue* queue,void* data)
{
if(queue == NULL) return;
if(data == NULL) return;
if(queue->size == MAX_SIZE) return;
queue->data[queue->size - 1] = data;
queue->size++;
}
//删除,头部
void Remove_SeqQueue(SeqQueue* queue)
{
if(queue == NULL) return;
//需要移动元素,将每个元素整体往前移
for(int i = 0; i < queue->size; i++)
{
queue->data[i] = queue->data[i+1];
}
queue->size--;
}
//返回队头元素
void* Front_SeqQueue(SeqQueue* queue)
{
if(queue == NULL) return NULL
if(queue->size == 0) return NULL
return queue->data[0];
}
//返回队尾元素
void* Back_SeqQueue(SeqQueue* queue)
{
if(queue == NULL) return NULL
if(queue->size == 0) return NULL
return queue->data[queue->size - 1];
}
//返回队列大小
int Size_SeqQueue(SeqQueue* queue)
{
if(queue == NULL) reutrn -1;
return queue->size;
}
//清空队列
void Clear_SeqQueue(SeqQueue* queue)
{
if(queue == NULL) return;
queue->size = 0;
}
//释放内存
void FreeSpace_SeqQueue(SeqQueue* queue)
{
if(queue == NULL) return;
free(queue);
}
int main()
{
return 0;
}