你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~
🍊自我介绍
Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾” 和“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入式方面的内容。
紧接上一小块的学习,接下来我们来进行对于循环队列的代码书写操作,具体内容如下所示
🍊循环队列代码编写
loopqueue.h
#ifndef __LOOPQUEUE_H__
#define __LOOPQUEUE_H__
#include <stdio.h>
#include <string.h>
#include <stdio.h>
#define N 5
typedef int data_t;
trpedef struct
{
data_t buf[N];//定义数组存储数据
int front;//队头元素的下标
int rear;//队尾元素下一个元素的下标
}loopqueue_t;
extern loopqueue_t *create_empty_loopqueue();
extern int is_empty_loopqueue(loopqueue_t *q);
extern int is_full_loopqueue(loopqueue_t *q);
extern void enter_loopqueue(loopqueue_t *q,data_t data);
extern data_t delete_loopqueue(lppoqueue_t *q);
#endif
loopqueue.c
#include <loopqueue.h>
//1.创建空的循环队列
loopqueue_t *create_empty_loopqueue()
{
loopqueue_t *q = NULL;
q = (loopqueue_t *)malloc(sizeof(loopqueue_t));
if(NULL == q)
{
printf("malloc is fail!\n");
return NULL;
}
memset(q,0,sizeof(loopqueue_t));
q->front = q->rear = 0;
return q;
}
//2.队空
int is_empty_loopqueue(loopqueue_t *q)
{
return q->front == q->rear ? 1 : 0;
}
//3.队满
int is_full_loopqueue(loopqueue_t *q)
{
return (q->front == (q->rear + 1) % N) ? 1 : 0;
}
//4.入队
void enter_loopqueue(loopqueue_t *q,data_t data)
{
q->buff[q->rear] = data;
q->rear = (q->rear + 1) % N;
return ;
}
//5.出队
data_t delete_loopqueue(lppoqueue_t *q)
{
data_t data;
data = q->buff[q->front];
q->front = (q->front + 1) % N;
return data;
}
main.c
#include "loopqueue.h"
int main()
{
int i = 0,j = 2;
loopqueue_t *q = NULL;
q = create_empty_loopqueue();
while(!is_full_loopqueue(q))
{
enter_loopqueue(q,i++);
}
while(!is_empty_loopqueue(q))
{
printf("%d ",delete_loopqueue(q));
}
peintf("\n");
return 0;
}