LinkedList 不仅实现了List接口还实现了Dueue接口(双端队列,既具有队列的特征,也具有栈的特征),Dueue接口是Queue的子接口。它也可以被当作堆栈、队列或双端队列进行操作。
LinkedList 实现 List 接口,能对它进行队列操作。
LinkedList 实现 Deque 接口,能将LinkedList当作双端队列使用。
使用LinkedList实现堆栈
import java.util.LinkedList;
/**
* LinkedList模拟栈,先进后出
*
*/
public class Stack<T> {
private LinkedList<T> linkedList = new LinkedList<T>();
/**
* 进栈
*
* @param t
* 进栈的元素
*/
public void push(T t) {
linkedList.addFirst(t);
}
/**
* 出栈
*
* @return 出栈的元素
*/
public T pop() {
return linkedList.removeFirst();
}
/**
* 销毁栈
*/
public void destroyStack() {
linkedList.clear();
}
/**
* 查看栈顶元素
*
* @return 栈顶的元素
*/
public T stackFirst() {
return linkedList.getFirst();
}
/**
* 查看栈底元素
*
* @return 栈底的元素
*/
public T stackLast() {
return linkedList.getLast();
}
/**
* 查看栈长度
*
* @return 栈的长度
*/
public int stackLength() {
return linkedList.size();
}
/**
* 判断栈是否为空
*
* @return 栈为空 true 栈不为空 false
*/
public boolean isEmpty() {
return linkedList.isEmpty();
}
/**
* 打印栈
*/
public String toString() {
return linkedList.toString();
}
}
使用LinkedList实现队列
import java.util.LinkedList;
/**
* LinkedList模拟队列,先进先出
*/
public class Queue<T> {
private LinkedList<T> linkedList = new LinkedList<T>();
/**
* 进队
*
* @param t
* 进队的元素
*/
public void enQueue(T t) {
linkedList.addLast(t);
}
/**
* 出队
*
* @return 出队的元素
*/
public T deQueue() {
return linkedList.removeFirst();
}
/**
* 销毁队列
*/
public void destroyQueue() {
linkedList.clear();
}
/**
* 查看队首元素
*
* @return 队首的元素
*/
public T queueFirst() {
return linkedList.getFirst();
}
/**
* 查看队尾元素
*
* @return 队尾的元素
*/
public T queueLast() {
return linkedList.getLast();
}
/**
* 查看队列长度
*
* @return 队列的长度
*/
public int queueLength() {
return linkedList.size();
}
/**
* 判断队列是否为空
*
* @return 队列为空 true 队列不为空 false
*/
public boolean isEmpty() {
return linkedList.isEmpty();
}
/**
* 打印队列
*/
public String toString() {
return linkedList.toString();
}
}
参考:
https://www.cnblogs.com/ybxxszl/p/9328850.html