LeetCode(232)用栈实现队列
题目
代码
import java.util.Stack;
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() {
//判断出栈是否为空
/* while(!stackOut.isEmpty()){
stackOut.pop();
}//将出栈先变为空 */
if(stackOut.isEmpty()){//必须为空才能添加元素
while(!stackIn.isEmpty()){
stackOut.push(stackIn.peek());//取头部数据
stackIn.pop();//把头部数据弹出去
}
}
int data=stackOut.peek();
stackOut.pop();
return data;
}
public int peek() {
//判断出栈是否为空
if(stackOut.isEmpty()){//添加元素钱,判空是必要的
while(!stackIn.isEmpty()){
stackOut.push(stackIn.peek());//取头部数据
stackIn.pop();//把头部数据弹出去
}
}
int data=stackOut.peek();
return data;
}
public boolean empty() {
return stackOut.isEmpty()&&stackIn.isEmpty();//判断为空的时候,必须两个均要为空
}
}
LeetCode(225)用队列实现栈
题目
代码
import java.util.LinkedList;
import java.util.Queue;
class MyStack {
//定义全局变量----使用一个队列实现栈
Queue<Integer> QueueToStack;
public MyStack() {
//无参构造器里面进行初始化-----队列的初始换应用
QueueToStack=new LinkedList<>();
}
public void push(int x) {
//获取队列的长度,将1-2-3-4 变成 4-3-2-1
QueueToStack.offer(x);
int size=QueueToStack.size();
size--;
while(size>0){
QueueToStack.offer(QueueToStack.peek());
QueueToStack.poll();
size--;
}
}
public int pop() {
//只能在初始化添加元素的时候改变
return QueueToStack.poll();
}
public int top() {
//再改变一次就变化了
return QueueToStack.peek();
}
public boolean empty() {
return QueueToStack.isEmpty();
}
}