循環隊列的操做主要包括出隊,入隊數組
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 ;
}