队列的顺序存储

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
请按任意键继续. . .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值