尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

数据结构-循环队列

数据结构-循环队列
📅 发布时间:2026/6/21 18:29:47

循环队列

功能实现

/**************************************************************************** * @name* @author* @date** *CopyRight (c) 2025-2026 All Right Reserved* *************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>typedef int DataType_t;     //用户自定义类型//定义结构体记录队列
typedef struct Circularqueue   
{DataType_t * Addr;      //队列首地址unsigned int Size;      //队列容量int Front;              //队列首下标int Rear;               //队列尾下标}CirQueue_t;                //别名  /**************************************************************************** * @name      	CirQueue_Create* @brief 		初始化队列* @param		* * @retval		point** @author		https://www.cnblogs.com/yuhengwang* *************************************************************************/
CirQueue_t * CirQueue_Create(unsigned int size)
{CirQueue_t *Manager = (CirQueue_t *)calloc(1,sizeof(CirQueue_t));              //申请堆内存,用于管理体//判断堆内存是否申请成功if (NULL == Manager){perror("calloc memory for Manager is failled");exit(-1);               //失败退出程序}Manager->Addr = (DataType_t *)calloc(size,sizeof(DataType_t));                 //为列表申请堆内存//判断堆内存是否申请成功if (NULL == Manager->Addr){perror("calloc memory for element is failled");free(Manager);                  //失败后释放管理体内存exit(-1);}Manager->Size = size;               //列表容量Manager->Front = 0;                 //列表首下标Manager->Rear = 0;                  //列表尾下标return Manager;                     //返回用于管理体内存地址
}/**************************************************************************** * @name      	CirQueue_Create* @brief 		判断队列是否为满* @param		* * @retval		bool** @author		https://www.cnblogs.com/yuhengwang* *************************************************************************/
bool CirQueue_IsFull(CirQueue_t *Manager)
{return (Manager->Rear+1%Manager->Size == Manager->Front) ? true : false;    //已满返回true,未满返回false
}/**************************************************************************** * @name      	CirQueue_Create* @brief 		判断队列是否为空* @param		* * @retval		bool** @author		https://www.cnblogs.com/yuhengwang* *************************************************************************/
bool CirQueue_IsEmpty(CirQueue_t *Manager)
{return Manager->Front == Manager->Rear ? true : false;    //已空返回true
}/**************************************************************************** * @name      	enqueue* @brief 		入队* @param		* * @retval		bool** @author		https://www.cnblogs.com/yuhengwang* *************************************************************************/
bool enqueue(CirQueue_t *Manager , DataType_t Data)
{if (CirQueue_IsFull(Manager))                      //判断队列是否已满{                               printf("\nCirQueue is full");                 //队列已满,退出此函数return false;   }Manager->Addr[Manager->Rear] =  Data;             //入队  Manager->Rear = (Manager->Rear+1)%Manager->Size;  //队尾指针后移return true;
}/**************************************************************************** * @name      	dequeue* @brief 		出队* @param		* * @retval		DataType_t** @author		https://www.cnblogs.com/yuhengwang* *************************************************************************/
DataType_t dequeue(CirQueue_t *Manager)
{int Temp = 0;    //定义变量记录下标//判断列表是否为空,列表为空,退出此函数if (CirQueue_IsEmpty(Manager)){printf("\nCirQueue is Empty");       return false;} Temp = Manager->Addr[Manager->Front];                   //出队Manager->Front = (Manager->Front+1)%Manager->Size;      //指针后移return Temp;}

主函数

int main(int argc , const char *argv[])
{CirQueue_t *Manager = CirQueue_Create(6);enqueue(Manager,1);   enqueue(Manager,3);   enqueue(Manager,5);printf("%d",dequeue(Manager));       enqueue(Manager,7);   enqueue(Manager,9);   enqueue(Manager,2); enqueue(Manager,4); }

运行结果

1
CirQueue is full

相关新闻

  • 2025年10月软件开发公司最新推荐,软件定制开发,crm系统定制软件开发,管理系统软件开发,物联网软件开发公司推荐!
  • 数据结构-顺序栈
  • 摄像头调试

最新新闻

  • 嵌入式GUI实战:基于MQX与eGUI的远程监控界面开发与优化
  • 低查重AI教材写作必备!AI教材生成工具,3天搞定30万字教材
  • 2026年6月厦门怎么找靠谱的营业性演出许可证代办机构 - 速递信息
  • 2026青岛营业性演出许可证代办哪家专业靠谱 - 速递信息
  • 运输途中再也没漏过料,这款包装真香了 - 速递信息
  • 数字电路仿真作业集4-6 阶段性开发总结与深度复盘

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号