Java 队列和栈
其他
2018-07-02 23:59:58
阅读次数: 0
注:本文为转载文章,原文地址为:点击打开链接
package com.xa.csj.utils;
import java.io.Serializable;
import org.apache.poi.hssf.record.formula.functions.T;
@SuppressWarnings("hiding")
public class MyQueen<T> implements Cloneable, Serializable{
private static final long serialVersionUID = -31028761875635919L;
/** 队列第一个元素 */
private Node first;
/** 队列最后元素 */
private Node last;
/** 队列大小 */
private int size = 0;
/** 队列结构 */
private class Node {
T item;
Node next;
Node previous;
}
/**
* 队列是否为空
*
* @return
*/
public boolean isEmpty() {
return size == 0;
}
/**
* 将元素压入队列尾部
*
* @param item
*/
public void push(T item) {
if (size == 0) {
first = new Node();
first.item = item;
last = first;
size++;
} else if (size > 0) {
Node newLast = new Node();
newLast.item = item;
last.next = newLast;
newLast.previous = last;
last = newLast;
size++;
}
}
/**
* 取出队列的第一个元素
*
* @return
*/
public T pop() {
if (size == 0) {
throw new ArrayIndexOutOfBoundsException();
}
Node oldFirst = first;
first = first.next;
size--;
return oldFirst.item;
}
/**
* 取出队列的最后的一个元素
*
* @return
*/
public T getLast() {
if (size == 0) {
throw new ArrayIndexOutOfBoundsException();
}
Node lastNode = last;
Node perNode = last.previous;
perNode.next = first;
last = perNode;
size--;
return lastNode.item;
}
/**
* 取队列深度
*
* @return
*/
public int size() {
return size;
}
}
增加了一个方法,使之可以先进先出,也可以是栈,先进后出
转载自blog.csdn.net/wgs_93/article/details/78879096