循环队列
1、循环队列的创建
#define N 5
typedef int data_type;
typedef struct{
data_type buf[N];
int front;
int rear;
}loop_queue;
loop_queue *create_loop_queue(){
loop_queue * lq=(loop_queue*)malloc(sizeof(loop_queue));
if(NULL==lq){
printf("malloc fail!\n");
}
memset(lq,0,sizeof(loop_queue));
return lq;
}
2、判空
int is_empty(loop_queue *lq){
return lq->front==lq->rear;
}
3、判满
int is_full(loop_queue *lq){
return lq->front==(lq->rear+1)%N;
}
4、入队
void in_queue(loop_queue *lq,data_type data){
lq->buf[lq->rear]=data;
lq->rear=(lq->rear+1)%N;
}
5、出队
data_type out_queue(loop_queue *lq){
data_type data=lq->buf[lq->front];
lq->front=(lq->front+1)%N;
return data;
}