循环顺序队列2——使用标示位判断队满或空
2015-06-09 01:16
381 查看
public class CircularQueue implements IQueue { /** * 循环顺序队列 * 采用设置标志位的方法区别循环队列的判空和判满 * 包括入队、出队和判队列是否为空 * */ private Object[] queueElem; //队列存储空间 private int flag = 0; //标志变量,当入队操作成功置为0,出队操作成功置为1 private int front; //队首 private int rear; //队尾 public CircularQueue(int maxSize) { front = rear = 0; queueElem = new Object[maxSize]; } //队列置空 @Override public void clear() { front = rear = 0; } @Override public boolean isEmpty() { // TODO Auto-generated method stub return rear == front && flag == 0; } @Override public int length() { // TODO Auto-generated method stub return (rear - front + queueElem.length) % queueElem.length; } //读队首元素 @Override public Object peek() { // TODO Auto-generated method stub if(isEmpty()){ return null; } return queueElem[front]; } //入队 @Override public void offer(Object x) throws Exception { if(front == rear && flag == 1) { throw new Exception("队列已满!"); } else { queueElem[rear] = x; rear = (rear + 1) % queueElem.length; flag = 1; //入队置flag为1 } } //出队 @Override public Object poll() { // TODO Auto-generated method stub if(isEmpty()){ return null; } else{ Object q = queueElem[front]; front = (front + 1) % queueElem.length; flag = 0; return q; } } }
相关文章推荐
- EXCEL内的字符比较公式
- 2015区域赛起航
- 菜鸟学Android笔记(二十六):Response数据输出
- APP Launchimage软件启动图片
- 黑马程序员_多线程间通信
- UVA 10635 Prince and Princess 最长公共子序列(nlongn)
- Rectangle Area
- mount 挂接命令及技巧光盘镜像文件、移动硬盘及U盘 简单说明
- 减少linux服务器大量TIME_WAIT
- lua 中的 bit extend 库 (可能仅对非负数有效)
- 6.8 Animation动画
- Uva - 455 - Periodic Strings
- Uva - 455 - Periodic Strings
- POJ 1469 COURSES (二分图最大匹配 匈牙利算法)
- 像在vim在中一样使用androidstudio
- Summary Day32
- display getSize()
- 关于各种编程语言调用C星寻路插件的例子
- 10 months then free? 10个月,然后自由
- UIApplication