public class MyStack<E> {
private Queue<E> Q1=new LinkedList<>();
private Queue<E> Q2=new LinkedList<>();
public E push(E e){
if(Q1.isEmpty()&&Q2.isEmpty()){
Q1.add(e);
}
if(Q1.isEmpty()){
Q2.add(e);
}
if(Q2.isEmpty()){
Q1.add(e);
}
return e;
}
public E pop(){
if(Q1.isEmpty()&&Q2.isEmpty()){
try {
throw new Exception("the stack is empty");
}catch (Exception e){
e.printStackTrace();
}
}
if(Q1.isEmpty()){
while (Q2.size()>1){
Q1.add(Q2.poll());
}
return Q2.poll();
}
if(Q2.isEmpty()){
while (Q1.size()>1){
Q2.add(Q1.poll());
}
return Q1.poll();
}
return null;
}
public E peek(){
if(Q1.isEmpty()&&Q2.isEmpty()){
try {
throw new Exception("the stack is empty");
}catch (Exception e){
e.printStackTrace();
}
}
if(Q1.isEmpty()){
while(Q2.size()>1){
Q1.add(Q2.poll());
}
E e=Q2.peek();
Q1.add(Q2.poll());
return e;
}
if(Q2.isEmpty()){
while(Q1.size()>1){
Q2.add(Q1.poll());
}
E e=Q1.peek();
Q2.add(Q1.poll());
return e;
}
return null;
}
public boolean empty(){
return Q1.isEmpty()&&Q2.isEmpty();
}
}
用两个队列实现栈的操作
最新推荐文章于 2022-03-17 01:24:14 发布