循环顺序队列(初始化、入队、出队、判空)
2015-07-05 10:03
585 查看
采用循环顺序方式存储队列,测试用例为:将0~9入队,然后打印输出,代码如下:
#define MAXQSIZE 100 typedef struct { QElemType data[MAXQSIZE]; int front,rear; }SqQueue; /* 初始化队列 */ void InitiQueue(SqQueue &Q) { Q.front = Q.rear = 0; } /* 判队列是否为空 */ bool isEmpty(SqQueue &Q) { if (Q.rear == Q.front) return TRUE; return FALSE; } /* 入队 */ bool EnQueue(SqQueue &Q, QElemType &e) { if ((Q.rear+1)%MAXQSIZE == Q.front) { printf("队列已满,不能加入新元素!\n"); return FALSE; } Q.data[Q.rear] = e; Q.rear = (Q.rear+1)%MAXQSIZE; return TRUE; } /* 出队 */ bool DeQueue(SqQueue &Q, QElemType &e) { if (isEmpty(Q)) { printf("队列为空,,没有元素!\n"); return FALSE; } e = Q.data[Q.front]; Q.front = (Q.front+1)%MAXQSIZE; return TRUE; } int main() { SqQueue SQ; InitiQueue(SQ); printf("输入的队列元素值为:\n"); for (int i=0; i<10; ++i) { EnQueue(SQ, i); printf(" %d ", i); } printf("\n打印队列元素值!\n"); QElemType temp[10]; for (int i=0; i<10; ++i) { DeQueue(SQ, temp[i]); printf(" %d ", temp[i]); } printf("\n"); system("pause"); return 0; }
相关文章推荐
- 系统过度导致Chrome图标丢失的恢复方法
- perl reverse 函数
- Solaris10 为用户添加定时任务
- Python编写算法导论基本算法
- Asp.Net Ajax的两种基本开发模式
- POJ 2823 Sliding Window(单调队列)
- 朱亚东 临睡前发点鸡汤^^
- IPO 首次公开募股(Initial Public Offerings,简称IPO)
- poj1154解题报告(dfs)
- 使用CascadingDropDown实现级联式下拉框
- H5大会之后,未来指向何方?
- 【iOS开发之Objective-C】继承
- poj2485解题报告
- OpenLayers3基础教程——OL3 介绍control
- OpenLayers3基础教程——OL3 介绍control
- BestCoder Round #46
- Domino中的读者域和作者域
- MySQL优化之——视图
- 取整的一些方法总结(java)
- 阶乘的增长和解决方案