栈的基本操作
Java Stack 类 | 菜鸟教程 (runoob.com)
定义方法:Stack<泛型> stack=new Stack<>();
队列的基本操作
定义方法:Queue<泛型> queue = new LinkedList<>();
因为LinkedList实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
添加元素:offer();
删除元素:poll();
返回第一个元素:peek();
是否为空:isEmpty();
232题目链接:232. 用栈实现队列 - 力扣(LeetCode)
class MyQueue {
Stack<Integer> stackIn;
Stack<Integer> stackOut;
public MyQueue() {
stackIn=new Stack<>();
stackOut=new Stack<>();
}
public void push(int x) {
stackIn.push(x);
}
public int pop() {
if(!stackOut.empty()){
int x=stackOut.pop();
return x;
}
while(!stackIn.empty()){
stackOut.push(stackIn.pop());
}
return stackOut.pop();
}
public int peek() {
int x=this.pop();
stackOut.push(x);
return x;
}
public boolean empty() {
return stackIn.empty()&&stackOut.empty();
}
}
/**
* Your MyQueue object will be instantiated and called as such:
* MyQueue obj = new MyQueue();
* obj.push(x);
* int param_2 = obj.pop();
* int param_3 = obj.peek();
* boolean param_4 = obj.empty();
*/
225题目链接:225. 用队列实现栈 - 力扣(LeetCode)
class MyStack {
Queue<Integer> queue;
public MyStack() {
queue= new LinkedList<Integer>();
}
public void push(int x) {
queue.offer(x);
int n=queue.size();
for(int i=0;i<n-1;i++){
queue.offer(queue.poll());
}
}
public int pop() {
return queue.poll();
}
public int top() {
return queue.peek();
}
public boolean empty() {
return queue.isEmpty();
}
}
/**
* Your MyStack object will be instantiated and called as such:
* MyStack obj = new MyStack();
* obj.push(x);
* int param_2 = obj.pop();
* int param_3 = obj.top();
* boolean param_4 = obj.empty();
*/