动态队列也是基于链表结构的实现,
1、构建节点
public class QueueNode<T>{
private T t;
private QueueNode<T> queueNode;
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
public QueueNode<T> getQueueNode() {
return queueNode;
}
public void setQueueNode(QueueNode<T> queueNode) {
this.queueNode = queueNode;
}
}
2、构建列队
public class MyQueue<T> {
private QueueNode<T> font;
private QueueNode<T> end;
private int queueSize;
public void init() {
QueueNode<T> headNode = new QueueNode<T>();
this.queueSize = 0;
this.font = headNode;
this.end = headNode;
}
/**
* 入队
* @param node
*/
public void add(QueueNode<T> node) {
if(this.font.equals(this.end)) {
QueueNode<T> endNode = new QueueNode<T>();
node.setQueueNode(endNode);
this.font = node;
this.end = this.font.getQueueNode();
this.queueSize++;
}else {
QueueNode<T> endNode = new QueueNode<T>();
node.setQueueNode(endNode);
this.end.setT(node.getT());
this.end.setQueueNode(node.getQueueNode());
this.end = this.end.getQueueNode();
this.queueSize++;
}
}
/**
* 出队
* @return 队首节点,这里可以改成直接返回节点数据域部分更好
*/
public QueueNode<T> peak(){
if(this.font.equals(this.end)) {
System.out.println("列队目前已经没有队员了");
return null;
}else {
QueueNode<T> node = this.font;
this.queueSize--;
this.font = node.getQueueNode();
return node;
}
}
public int size() {
return this.queueSize;
}
}