本文主要介绍了C语言循环队列的实现,对于数据结构与算法的研究有所帮助,需要的朋友可以参考下
生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题;从生活中,可以抽象出队列的概念,队列就是一个能够实现“先进先出”的存储结构。队列分为链式队列和静态队列;静态队列一般用数组来实现,但此时的队列必须是循环队列,否则会造成巨大的内存浪费;链式队列是用链表来实现队列的。
- #ifndef SQQUEUE_H_INCLUDED #define SQQUEUE_H_INCLUDED /* 防止重复包含 */
- //////////////////////////////////////////
- //包含头文件 #include <stdlib.h>
- #include "ds.h" // OK, Status 等定义
- //数据元素的类型(缺省使用int型) #ifndef ElemType
- #define ElemType int #define USE_DEFAULT_ELEMTYPE /* 使用缺省类型的标志 */
- #endif //ElemType
- ////////////////////////////////////////// //循环队列的存储结构
- #define MAXQSIZE 500/* 循环队列的最大容量 */
- typedef struct { /* TODO (#1#): 这里完成循环队列的类型定义 */
- ElemType *base; int front;
- int rear; //....................................
- } SqQueue;
- //////////////////////////////////////////
- //循环队列的基本操作
- //构造一个空队列Q Status InitQueue(SqQueue &Q)
- { /* TODO (#2#): 构造空队列 */
- Q.base=(ElemType*)malloc(MAXQSIZE *sizeof(ElemType)); if(!Q.base)exit(OVERFLOW);
- QQ.front=Q.rear =0; return OK; //TODO: 替换这行代码,以下同
- //.................................... }
- //销毁队列Q
- // 前提:队列Q已存在 Status DestroyQueue(SqQueue &Q)










