循环队列的操做主要包括出队,入队数组
code:函数
#include<stdio.h>spa
#include<malloc.h>指针
struct queuecode
{队列
int *p;//指向数组的指针 it
int front;//队列的第一个下标 io
int rear;//队列最后一个元素下一个的下标 循环
};遍历
void init_queue(struct queue *qq);//队列初始化函数
void in_queue(struct queue *qq,int val);//入队函数
bool full_queue(struct queue *qq);//判断队列是否为满函数
void out_queue(struct queue *qq);//出队函数
bool empty_queue(struct queue *qq);//判断队列是否为空函数
void traverse_queue(struct queue *qq);//遍历输出队列函数
int main()
{
struct queue ss;
init_queue(&ss);
in_queue(&ss,1);
in_queue(&ss,2);
in_queue(&ss,3);
in_queue(&ss,4);
in_queue(&ss,5);
in_queue(&ss,6);
in_queue(&ss,7);
traverse_queue(&ss);
out_queue(&ss);
out_queue(&ss);
traverse_queue(&ss);
}
void init_queue(struct queue *qq)//队列的初始化就是将front,rear下标置0
{
qq->p=(int *)malloc(sizeof(int)*6);//将p指向有5个整形元素的数组
qq->front=0;
qq->rear=0;
}
bool full_queue(struct queue *qq)
{
if((qq->rear+1)%6==qq->front)
return true;
else
return false;
}
void in_queue(struct queue *qq,int val)
{
if(full_queue(qq))
{
printf("队列满了!\n");
}
else
{
qq->p[qq->rear]=val;
qq->rear=(qq->rear+1)%6;
}
}
void traverse_queue(struct queue *qq)
{
int i=qq->front;
while(i!=qq->rear)
{
printf("%d ",qq->p[i]);
i=(i+1)%6;
}
printf("\n");
}
bool empty_queue(struct queue *qq)
{
if(qq->front==qq->rear)
return true;
else
return false;
}
void out_queue(struct queue *qq)
{
if(empty_queue(qq))
{
printf("队列是空!\n");
}
else
{
qq->front=(qq->front+1)%6;
}
return ;
}