ArrayQueue实现
来源:互联网 发布:单片机复位键封装 编辑:程序博客网 时间:2024/04/27 15:14
ArrayQueue的实现
package honbaa_queue;
import java.util.Arrays;
import java.util.Iterator;
public class ArrayQueue<T> implements Queue<T>,Iterable<T>{
private T[]container;
private int head;//指向对头元素
private int tail;//指向队尾元素
private final int DEFAULT_CAPACITY=10;
private final int INCREMENT=10;
public ArrayQueue() {
container = (T[])new Object[DEFAULT_CAPACITY];
head = -1;//由于数组中没有对象
tail = -1;
}
@Override
public void enQueue(T element) {
if(size()==container.length)
expandCapacity();
//放心的入队
container[tail+1]=element;
//改变tail指针
tail++;
//改变head,头只在0位置
head = 0;
}
private void expandCapacity() {
container = Arrays.copyOf(container,DEFAULT_CAPACITY+INCREMENT);
}
@Override
public T outQueue() {
//判空
if(isEmpty())
try {
throw new Exception("the queueis emtpy!");
} catch (Exceptione) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
//放心出队,然后后面的元素向前移动
T out = container[head];
//移动
for(inti=1;i<=tail;i++)
container[i-1] =container[i];
//tail减1,head还是0
tail--;
returnout;
}
@Override
public int size() {
if(tail==head &&head==-1)
return 0;
else
returntail-head+1;
}
@Override
public boolean isEmpty() {
if(size()==0)
return true;
else
return false;
}
@Override
public Iterator<T> iterator() {
return new ArrayQueueIterator();
}
private class ArrayQueueIterator<T> implementsIterator<T>{
//从对头遍历到队尾
private int currentPos=-1;
@Override
public boolean hasNext() {
if(currentPos <tail)//如果当前位置小于tail那一定还有下一个啊
return true;
else
return false;
}
@Override
public T next() {
currentPos++;
return(T) container[currentPos];
}
}
public StringtoString(){
StringBuilder sb =new StringBuilder();
Iterator it = iterator();
while(it.hasNext())
sb.append(it.next()+" ");
returnsb.toString();
}
}
- ArrayQueue实现
- C 实现ArrayQueue队列
- C 实现ArrayQueue队列
- arrayQueue 和linkedQueue
- jdk8源码之Queue-ArrayQueue
- java ArrayQueue数据队列的使用
- Java中ArrayQueue类的使用
- 实现
- 实现
- 红黑树实现 实现代码
- java实现排列组合实现
- 实现Runnable 实现线程
- 实现ViewPager多种实现
- 双向LSTM实现实现
- 实现缓存 java实现
- 三子棋的实现的实现的实现
- 四则运算实现
- 继承实现
- 运维监控开发笔记
- Spring学习笔记(二)
- 常用的OpenCV函数速查
- 广义表算法库及其应用(1)——建立广义表算法库
- web开发中遇到的奇葩错误
- ArrayQueue实现
- Color类与int类的互转,二进制的移位操作
- Binary tree implementation using c++
- [leetcode 110]Balanced Binary Tree
- vs2010下Release版本调试代码设置
- TestQueue测试类
- JAVA IO结构图
- [leetcode 231]Power of Two
- 棋盘问题