LinkedQueue链式队列方法的实现
来源:互联网 发布:流量攻击软件 编辑:程序博客网 时间:2024/05/16 19:37
使用链的方式存储节点,而不是使用数组了。
操作还是接口中定义的那些了。在链式的存储方式下,分写类的成员和方法的实现。
package honbaa_queue;
import java.util.Iterator;
public class LinkedQueue<T> implements Queue<T> {
//仍然先定义节点类型
private class Node{
private Tdata;
private Nodenext;
}
//成员
private Nodehead;//对头,同样使用一个空的无意义节点
private Nodetail;//队尾
//这里就要加个size了,因为haed和tail没法做减法
private int size;
//构造函数
public LinkedQueue() {
Node node = new Node();
node.data =null;
node.next =null;
//head和tail都指向这个空节点
head = node;
tail = node;
size = 0;
}
@Override
public void enQueue(T element) {
//不存在容量的问题,直接在tail后面加一个新的节点
Node newNode = new Node();
newNode.data =element;
newNode.next =null;
//挂在tail后面
tail.next =newNode;
//tail向后移动,head不动
tail = tail.next;
//size++
size++;
}
@Override
public T outQueue() {
if(size()==0)
try {
throw new Exception("the queueis empty!");
} catch (Exceptione) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
//head后面的第一个元素除掉。
Node first = head.next;
head.next =first.next;
//size--
size--;
returnfirst.data;
}
@Override
public int size() {
returnsize;
}
@Override
public boolean isEmpty() {
if(size()==0)
return true;
else
return false;
}
@Override
public Iterator<T> iterator() {
return new LinkedQueueIterator();
}
private class LinkedQueueIterator<t> implements Iterator<T>{
//head处
private NodecurrentPos = head;
@Override
public boolean hasNext() {
if(currentPos.next !=null)
return true;
else
return false;
}
@Override
public T next() {
// 返回下一个
currentPos = currentPos.next;
returncurrentPos.data;
}
}
public String toString(){
StringBuilder sb =new StringBuilder();
Iterator it = iterator();
while(it.hasNext())
sb.append(it.next()+" ");
returnsb.toString();
}
}
- LinkedQueue链式队列方法的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现。
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 队列的链式实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 队列的链式实现
- 队列的链式实现
- c++11新特性VS2013编译器
- Git学习(一)git服务器的简易搭建
- BigInteger
- hdoj--2579--Dating with girls(2)(搜索+三维标记)
- 搭建个人云服务(一)
- LinkedQueue链式队列方法的实现
- Android轻量级ORM框架ActiveAndroid入门教程(转)
- php mysql事务处理回滚操作
- Debug模式下正确,Release错误
- LIBSVM在python下的使用
- 在一台服务器上配置多个Tomcat的方法
- 应用程序互相跳转
- HTTP/2和WebSocket及HTML5资料整理--HTTP2篇
- php中对MYSQL操作之事务控制,回滚