循环队列代码演示
本文总字数:2520,阅读预计需要:6分钟
循环队列代码掩饰
/*
循环队列代码
*/
#include <stdio.h>
#include <malloc.h>
typedef int bool;
#define false 0
#define true 1
//循环队列结构体
typedef struct Queue
{
int *pBase;
int front;
int rear;
}Queue;
int glength; //队列长度
//队列这种数据结构中的一些功能函数
void init_queue(Queue *queue);
bool enter_queue(Queue *queue, int val);
void show_queue(Queue *queue);
bool full_queue(Queue *queue);
bool out_queue(Queue *queue, int *val);
bool empty_queue(Queue *queue);
int main(void)
{
Queue queue;
int val;
glength = 6;
init_queue(&queue);
enter_queue(&queue, 4);
enter_queue(&queue, 5);
enter_queue(&queue, 6);
enter_queue(&queue, 1);
show_queue(&queue);
out_queue(&queue, &val);
show_queue(&queue);
printf("出队的元素值为:%d\n", val);
return 0;
}
/*
函数名:init_queue
作用:初始化一个队列
输入:Queue *queue
输出:无
*/
void init_queue(Queue *queue)
{
queue->pBase = (int *)malloc(sizeof(int) * glength);
if (queue->pBase == NULL)
{
return;
}
queue->front = queue->rear = 0;
return;
}
/*
函数名:enter_queue
作用:相对列中加入一个元素
输入:Queue *queue, int val(加入队列中的值)
输出:true/false(加入队列是否成功)
*/
bool enter_queue(Queue *queue, int val)
{
if (full_queue(queue))
{
printf("队列已满\n");
return false;
}
queue->pBase[queue->rear] = val;
queue->rear += 1;
return true;
}
/*
函数名:empty_queue
作用:检测队列是否为空
输入:Queue *queue
输出:true(队列为空)/false
*/
bool empty_queue(Queue *queue)
{
if (queue->rear == queue->front)
{
return true;
}
else
return false;
}
/*
函数名:full_queue
作用:检测队列是否已满
输入:Queue *queue
输出:true(队列已满)/false
*/
bool full_queue(Queue *queue)
{
if ((queue->rear + 1) % glength == queue->front)
{
return true;
}
else
return false;
}
/*
函数名:show_queue
作用:展示队列中的元素
输入:Queue *queue
输出:无
*/
void show_queue(Queue *queue)
{
int p;
if (empty_queue(queue))
{
printf("队列为空\n");
return;
}
p = queue->front;
printf("队列中的元素为:");
while (p != queue->rear)
{
printf("%d、", queue->pBase[p]);
p += 1;
}
printf("\n");
return;
}
/*
函数名:out_queue
作用:从队列中出一个元素
输入:Queue *queue, int *val(承接出队列元素的数值)
输出:true/false(元素出队列是否成功)
*/
bool out_queue(Queue *queue, int *val)
{
int p = queue->front;
if (empty_queue(queue))
{
printf("队列为空\n");
return false;
}
*val = queue->pBase[p];
queue->front += 1;
return true;
}
我们向往远方,却忽略了此刻的美丽
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗