LinkedList
LinkedList同时实现了List接口和Deque对口,也就是收它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(stack),这样看来,linkedList简直就是无敌的,当你需要使用栈或者队列时,可以考虑用LinkedList,一方面是因为Java官方已经声明不建议使用Stack类,更遗憾的是,Java里根本没有一个叫做Queue的类(只是一个接口的名字)。关于栈或队列,现在首选是ArrayDeque,它有着比LinkedList(当作栈或队列使用时)更好的性能。
LinkedList 底层基于链表结构,无法向 ArrayList 那样随机访问指定位置
剑指 Offer 09. 用两个栈实现队列
class CQueue {
LinkedList<Integer>A,B;
public CQueue() {
A=new LinkedList<Integer>();
B=new LinkedList<Integer>();
}
public void appendTail(int value) {
A.addLast(value);
}
public int deleteHead() {
if(!B.isEmpty()){
return B.removeLast();
}
if(A.isEmpty()){
return -1;
}
while(!A.isEmpty()){
B.addLast(A.removeLast());
}
return B.removeLast();
}
}
/**
* Your CQueue object will be instantiated and called as such:
* CQueue obj = new CQueue();
* obj.appendTail(value);
* int param_2 = obj.deleteHead();
*/
剑指 Offer 30. 包含min函数的栈
class CQueue {
LinkedList<Integer>A,B;
public CQueue() {
A=new LinkedList<Integer>();
B=new LinkedList<Integer>();
}
public void appendTail(int value) {
A.addLast(value);
}
public int deleteHead() {
if(!B.isEmpty()){
return B.removeLast();
}
if(A.isEmpty()){
return -1;
}
while(!A.isEmpty()){
B.addLast(A.removeLast());
}
return B.removeLast();
}
}
/**
* Your CQueue object will be instantiated and called as such:
* CQueue obj = new CQueue();
* obj.appendTail(value);
* int param_2 = obj.deleteHead();
*/