数据结构:循环队列(二)
2014-04-27 11:40
253 查看
假设将循环队列定义为:以域变量rear和length分别指示循环队列中队尾元素的位置和内含元素的个数。试给出此循环队列的队满条件,并写出相应的入队列和出队列的算法。
循环队列CLenQueue的类型定义如下:
实现函数如下:
循环队列CLenQueue的类型定义如下:
typedef char QElemType; typedef struct { QElemType elem[MAXQSIZE]; int length; int rear; } CLenQueue;
实现函数如下:
Status EnCQueue(CLenQueue &Q, QElemType x) { if(Q.length == MAXQSIZE){ return ERROR;//循环队列满 } if(MAXQSIZE - 1 != Q.rear){ ++Q.rear; Q.elem[Q.rear] = x; } else{//rear指向循环队列的末尾时,作特殊处理使其构成循环 Q.rear = 0; Q.elem[Q.rear] = x; } ++Q.length;//当前元素个数+1 return OK; } Status DeCQueue(CLenQueue &Q, QElemType &x) { if(!Q.length){ return ERROR;//循环队列空 } if(Q.rear + 1 >= Q.length){//当rear的下标大于对头指向的下标时 x = Q.elem[Q.rear + 1 - Q.length]; } else{//当rear的下标小于队头下标时 x = Q.elem[MAXQSIZE + Q.rear + 1 - Q.length]; } --Q.length;//当前元素个数-1 return OK; }
相关文章推荐
- 动易2006序列号破解算法公布
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构与算法揭秘二
- C#数据结构揭秘一
- 关于C语言中参数的传值问题
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- 探讨C语言的那些小秘密之断言
- 浅析STL中的常用算法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- 基于C语言fflush()函数的使用详解
- 关于C语言除0引发的思考
- 深入分析C中不安全的sprintf与strcpy
- 探讨register关键字在c语言和c++中的差异
- C中实现矩阵乘法的一种高效的方法
- c语言printf函数的使用详解
- C语言学籍管理系统源代码
- 浅析C语言中的sizeof
- c语言内存泄露示例解析
- 浅析C语言位域和位段