您的位置:首页 > 理论基础 > 数据结构算法

数据结构之动态队列的java简单实现

2018-01-29 11:53 507 查看
动态队列也是基于链表结构的实现,

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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息