SeqQueue.h头文件 定义队列一些常用API函数
#ifndef SEQQUEUE_H
#define SEQQUEUE_H
#define MAX_SIZE 1024
typedef struct SEQQUEUE
{
void* data[MAX_SIZE];
int size;
}SeqQueue;
//初始化
SeqQueue* Init_SeqQueue();
//入队
void Push_SeqQueue(SeqQueue* queue,void* data);
//返回队头数据
void* Front_SeqQueue(SeqQueue* queue);
//出队
void Pop_SeqQueue(SeqQueue* queue);
//返回队尾数据
void* Back_SeqQueue(SeqQueue* queue);
//返回大小
int Size_SeqQueue(SeqQueue* queue);
//清空队列
void Clear_SeqQueue(SeqQueue* queue);
//销毁
void FreeSpace_SeqQueue(SeqQueue* queue);
#endif
SeqQueue.cpp文件主要实现队列中各个API的过程
#include"SeqQueue.h"
#include<stdio.h>
#include<stdlib.h>
//初始化
SeqQueue* Init_SeqQueue()
{
SeqQueue* queue=(SeqQueue*)malloc(sizeof(SeqQueue));
queue->size=0;
for(int i=0;i<MAX_SIZE;i++)
{
queue->data[i]=0;
}
return queue;
}
//入队
void Push_SeqQueue(SeqQueue* queue,void* data)
{
//左边当队头
if(queue==NULL)
return;
if(data==NULL)
return;
if(queue->size>MAX_SIZE)
return;
queue->data[queue->size]=data;
queue->size++;
}
//返回队头数据
void* Front_SeqQueue(SeqQueue* queue)
{
if(queue==NULL)
return NULL;
if(queue->size==NULL)
return NULL;
return queue->data[0];
}
//出队
void Pop_SeqQueue(SeqQueue* queue)
{
if(queue==NULL)
return ;
if(queue->size==NULL)
return ;
for(int i=0;i<queue->size-1;i++)
{
queue->data[i]=queue->data[i+1];
}
queue->size--;
}
//返回队尾数据
void* Back_SeqQueue(SeqQueue* queue)
{
if(queue==NULL)
return NULL;
if(queue->size==NULL)
return NULL;
return queue->data[queue->size-1];
}
//返回大小
int Size_SeqQueue(SeqQueue* queue)
{
if(queue==NULL)
return -1;
return queue->size;
}
//清空队列
void Clear_SeqQueue(SeqQueue* queue)
{
if(queue==NULL)
return;
queue->size=0;
}
//销毁
void FreeSpace_SeqQueue(SeqQueue* queue)
{
if(queue)
free(queue);
}
主函数
#include<stdio.h>
#include"SeqQueue.h"
#include<string.h>
#include<stdlib.h>
typedef struct PERSON
{
char name[64];
int age;
}Person;
int main()
{
//创建队列
SeqQueue* queue=Init_SeqQueue();
Person p1={"aaa",10};
Person p2={"bbb",20};
Person p3={"ccc",30};
Person p4={"ddd",40};
Person p5={"eee",50};
Push_SeqQueue(queue,(Person*)&p1);
Push_SeqQueue(queue,(Person*)&p2);
Push_SeqQueue(queue,(Person*)&p3);
Push_SeqQueue(queue,(Person*)&p4);
Push_SeqQueue(queue,(Person*)&p5);
printf("------返回队尾元素--------\n");
Person* backPerson=(Person*)Back_SeqQueue(queue);
printf("Name:%s Age:%d\n",backPerson->name,backPerson->age);
printf("------队头数据遍历--------\n");
while(Size_SeqQueue(queue)>0)
{
//返回队头数据
Person* person=(Person*)Front_SeqQueue(queue);
printf("Name:%s Age:%d\n",person->name,person->age);
Pop_SeqQueue(queue);
}
FreeSpace_SeqQueue(queue);
return 0;
}
测试结果展示:
------返回队尾元素--------
Name:eee Age:50
------队头数据遍历--------
Name:aaa Age:10
Name:bbb Age:20
Name:ccc Age:30
Name:ddd Age:40
Name:eee Age:50
请按任意键继续. . .