队列的顺序存储实现

对外接口

一.初始化队列

二.入队

三.出队

四.返回头元素

五.返回尾元素

六.返回队列大小

七.判断队列是否为空

八.销毁

seqQueue.h(动态数组)

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"dynamicArray.h"//动态数组的头文件
#define MAX 1024
#define void* seqQueue;
//初始化队列

//入列
seqQueue init_SeqQueue();

//出列
void push_SeqQueue(seqQueue queue,void*data);
//返回队头元素
void * front_SeqQueue(seqQueue queue);
//返回队尾元素
void back_SeqQueue(seqQueue queue);
//返回队列的大小
void size_SeqQueue(seqQueue queue);
//判断队列是否为空
void IsEmpty_SeqQueue(seqQueue queue);
//销毁
void destroy_SeqQueue(seqqueue queue);

tset.c

#include"contact.h"
//测试队列
struct Person
{
char name[64];
int age;
};
tset()
{
//初始化队列
seqQueue queue=init_SeqQueue();
//准备数据
struct Person p1 ={"aaa",10};
struct Person p1 ={"bbb",20};
struct Person p1 ={"ccc",30};
struct Person p1 ={"ddd",40};
struct Person p1 ={"eee",50};
//入队
push_SeqQueue{queue,&p1};
push_SeqQueue{queue,&p2};
push_SeqQueue{queue,&p3};
push_SeqQueue{queue,&p4};
push_SeqQueue{queue,&p5};
while(size_SeqQueue(queue)>0)
{
//获取队头元素
struct Person*pFront=front_SeqQueue(queue);
printf("对头元素---姓名:%s 年龄:%d\n",pFront->name,pFront->age);
//获取队尾元素
struct Person*pBack=back_SeqQueue(queue);
printf("对尾元素---姓名:%s 年龄:%d\n",pBack->name,pBack->age);

//出队
pop_SeqQueue(queue);
}
printf("队列的大小为:%d\n",size_SeqQueue(queue));
}
//判断队列是否为空
//IsEmpty_SeqQueue(queue);
//销毁
destroy_SeqQueue(queue);




int main ()
{
tset()
systrm("puase");
return EXIT_SUCCESS;
}

seqQueuet.c(动态数组)

include"seqQueue.h"
#define void* seqQueue;
//初始化队列
seqQueue init_seqQueue()
{
struct dynamicArray*arr=init_DynamicArray(MAAX);
return arr;
}
//入列
seqQueue init_SeqQueue(seqQueue queue,void *data)
{
if(NULL == queue)
{
return;
}
if(NULL==data)
{
return;
}
struct dynamicArray * myQueue=queue;
if(myQueue->my_size>=MAX)
{
return ;
}
//人队 === 尾插
inset——dynamicArray(myQueue,myQueue->m_size,data);
}

//出列
void push_SeqQueue(seqQueue queue,void*data)
{
{
if(NULL == queue)
{
return;
}
struct dynamicArray * myQueue=queue;
if(myQueue->m_size<=0 )
{
return;
}
removeByPos_DynamicArray(myQueue,0);
}
//返回队头元素
void * front_SeqQueue(seqQueue queue)
{
if(NULL == queue)
{
return NULL;
}
struct dynamicArray * myQueue=queue;
return myQueue->pAddr[0];
}

//返回队尾元素
void* back_SeqQueue(seqQueue queue)
{
if(NULL == queue)
{
return NULL;
}
struct dynamicArray * myQueue=queue;
return myQueue->pAddr[myQueue->m_size-1];
}
//返回队列的大小
int size_SeqQueue(seqQueue queue)
{
if(NULL == queue)
{
return NULL;
}
struct dynamicArray * myQueue=queue;
return myQueue->m_size;
}
//判断队列是否为空
void IsEmpty_SeqQueue(seqQueue queue)
{
IsEmpty_DynamicArray(queue)
}
void destroy_SeqQueue(queue)
{
destroy_DynamicArray(queue);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值