参考自维基百科:

含测试代码,详细注释:

#include

#include

#include

/*循环队列 C语言实现

*2011-04-28

*liliming123@sina.com

*/

#ifndef QElementType

#define QElementType int

#endif

#ifndef MAX_SIZE

#define MAX_SIZE 500

#endif

typedef struct

{

QElementType *base;//存储数据

int front;//指向队列头

int rear;//指向队列尾

}CirQueue;

void InitCirQueue(CirQueue *Q)

{//初始化循环队列

//申请空间

Q->base = (QElementType *)malloc(MAX_SIZE*sizeof(QElementType));

//内存检查

if (!Q->base)

exit(0);

//初始条件,空队列

Q->front = Q->rear = 0;

}

void DestroyCirQueue(CirQueue *Q)

{//销毁队列

if (Q->base)

free(Q->base);

Q->base = NULL;

Q->front = Q->rear = 0;

}

void ClearCirQueue(CirQueue *Q)

{//清空队列

Q->front = Q->rear = 0;

}

bool IsEmptyCirQueue(CirQueue *Q)

{//循环队列是否为空,为空返回true

if (Q->front == Q->rear)

return true;

else

return false;

}

int LengthOfCirQueue(CirQueue *Q)

{//获得队列的大小

return (Q->rear - Q->front + MAX_SIZE)%MAX_SIZE;

}

bool InsertCirQueue(CirQueue *Q, QElementType e)

{//添加元素到队列,添加成功返回true

//判断队列是否已满

if ((Q->rear+1)%MAX_SIZE == Q->front)

return false;

Q->base[Q->rear] = e;

Q->rear = (Q->rear + 1) % MAX_SIZE;

return true;

}

bool DelCirQueue(CirQueue *Q, QElementType *e)

{//删除元素,值保存在e中,删除成功返回true

if (Q->front == Q->rear)

return false;

*e = Q->base[Q->front];

Q->front = (Q->front + 1) % MAX_SIZE;

return true;

}

void PrintCirQueue(CirQueue *Q)

{//打印队列

if (IsEmptyCirQueue(Q))

return;

printf("the Queue is:");

int i = Q->front;

while (i != Q->rear)

{

printf("%d ",Q->base[i]);

i = (i+1)%MAX_SIZE;

}

printf("/n");

}

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

//测试

CirQueue *test;

test = (CirQueue *)malloc(sizeof(CirQueue));

InitCirQueue(test);

InsertCirQueue(test, 1);

InsertCirQueue(test, 2);

InsertCirQueue(test, 3);

InsertCirQueue(test, 4);

InsertCirQueue(test, 5);

PrintCirQueue(test);

int temp;

DelCirQueue(test, &temp);

printf("the delete data is : %d/n", temp);

PrintCirQueue(test);

free(test);

test = NULL;

getchar();

return a.exec();

}

c语言循环队列的销毁,C语言循环队列相关推荐

  1. C语言查看队头元素,C语言实现循环队列的初始化进队出队读取队头元素判空-1...

    目前,处在学习数据结构+ing,由于之前学过了队列,今天就把自己写过的代码做了一些完善分享给大家,希望能够帮助到有需要的朋友,有不足的地方欢迎大家交流    φ(゜▽゜*)♪ 队列是另一种限定性的线性 ...

  2. 队列的基本操作c语言代码大全,数据结构――队列(循环队列)的基本操作(实现链队列逐一取出c语言代码)...

    队列 队列是一种重要的线性结构,与栈相同也需要顺序表或者链表作为基础.队列是先进先出(first in first out)FIFO的线性表. 所有数据从队列的一端进入,从另一端离开. 队列中允许插入 ...

  3. 【LeetCode之栈和队列】:关于栈和队列经典的OJ题(用C语言实现,附图详解)

    LeetCode题目 1.括号匹配问题 2.用队列实现栈 3.用栈实现队列 4.设计循环队列 1.括号匹配问题 LeetCode链接: [20. 有效的括号] 这道题就是经典的利用栈解决问题的例子:思 ...

  4. 【数据结构 C语言版】第六篇 栈、队列经典必刷面试考研题

    [数据结构 C语言版]第六篇 栈.队列经典必刷面试考研题 写在前面 更新情况记录: 最近更新时间 更新次数 2022/10/20 1 参考博客与书籍以及链接: (非常感谢这些博主们的文章,将我的一些疑 ...

  5. java for循环_愉快地学Java语言:第五章 循环

    导读 本文适合Java入门,不太适合Java中高级软件工程师.本文以<Java程序设计基础篇>第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述.本篇文章只是这个系列中的一篇,如果 ...

  6. 数据结构——链式队列解析(C语言版)

    摘自:数据结构学习--链式队列解析(C语言版) 作者:正弦定理 发布时间:2020-11-26 21:07:08 网址:https://blog.csdn.net/chinesekobe/articl ...

  7. 初识C语言(1)(2)(3)(4) C语言入门 保姆级教程 变量 常量 字符串 转义字符 操作符 关键字 字符串 指针 函数 结构体 数组 选择语句 循环语句

    一.如何写C语言代码 1.编译器 2.创建项目 3.创建源文件 4.写代码 5.编译+链接+运行 项目名字不要汉语,不要特殊字符,不要加空格,项目路径一般为你想要的路径 C语言中,一般创建.c源文件, ...

  8. 511遇见易语言多线程大漠后台多窗口自动循环登号模板

    511遇见曾经推出当个账号循环登录,多个账号循环登录,而本套模板会自动根据你开启的游戏窗口多少自动循环自动登录自动切换账号,来完成任务,你也可以开启单个窗口,实现当个账号的循环,有可以开启任意个窗口完 ...

  9. c语言中循环结构的作用,C语言循环结构知识点

    C语言循环结构知识点 引导语:循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构.以下是百分网小编分享给大家的C语言循环结构知识点,欢迎 ...

最新文章

  1. 到底什么是hash?它起什么作用?
  2. python3 numpy array_python 3和numpy数组
  3. 俄罗斯方块(结对作业)
  4. [Java基础]Stream流综合练习
  5. php opcache 安装,php opcache安装和配置
  6. java day38【Servlet 、HTTP协议 、Request】
  7. 057 生成器和生成器表达式
  8. 多目标优化(三)简单的 MOEA/D
  9. VCL界面开发工具!DevExpress VCL v19.2.5全新出发
  10. 质量与规范,敬我们那些年欠下的技术债
  11. 7个技巧让你写出干净的 TSX 代码
  12. (PTA)数据结构(作业)6、队列
  13. MMDetection3D 1.1:统一易用的 3D 感知平台
  14. 微信小程序之商用商城小程序
  15. 千里走单骑:06-北京到上海骑记--Day5.风雨回家路
  16. imx6u开发板导入实际应用(一)熟悉开发板,建立调试环境
  17. java 微秒 时间_Java中时间的计算 年月日小时分钟秒毫秒微秒
  18. matlab实现一个简单的细胞自动机小游戏
  19. Python chicken (2)
  20. SLAM综述科普性文章

热门文章

  1. 清华刘知远:大模型「十问」,寻找新范式下的研究方向
  2. 医学图像重采样spacing和direction
  3. Python 翻译 Post请求
  4. 学大教育仙林亚东城校区——南京市栖霞区仙隐北路12号亚东商业广场1楼B12
  5. python isoweekday和weekday的区别
  6. Ubuntu 网页浏览器 谷歌浏览器 下载使用
  7. 【渝粤教育】国家开放大学2018年春季 8622-21T社会调查研究与方法 参考试题
  8. 英语时态和完成时详解
  9. 以user_1用户身份登录mysql_创建MySQL用户帐户和授予权限
  10. 笔记——流水线基础概念