由两个栈组成队列

/*
 * question:编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)
 * time:2017/4/1
 * name:lqs
 */
package stack1;
/*
 *stackPush:压入栈
 *stackPop:弹出栈
 */
import java.util.*;
public class TwoStacksChangeToQueue {
private static Stack<Integer>stackPush;
private static Stack<Integer>stackPop;

public  TwoStacksChangeToQueue(){//构造函数
stackPush=new Stack<Integer>();
stackPop=new Stack<Integer>();
}
public static void add(int pushNumber){//加元素
stackPush.push(pushNumber);//压入stackPsuh栈
}
public static int poll(){//出栈
if(stackPush.empty()&&stackPop.empty()){
throw new RuntimeException("Queue is empty!");
}
else if(stackPop.isEmpty()){
while(!stackPush.empty()){
stackPop.push(stackPush.pop());//获取stackpush栈顶元素,依次倒入stackPop栈
}
}
return stackPop.pop();//返回stackPop栈的出栈元素
}
public static int peek(){//取栈顶元素
if(stackPop.empty()&&stackPush.empty()){
throw new RuntimeException("Queue is empty!");
}
else if(stackPop.empty()){
while(!stackPush.empty()){
stackPop.push(stackPush.pop());
}
}
return stackPop.peek();//返回stackPop栈顶元素

}
public static void main(String[] args) {
TwoStacksChangeToQueue TSCTQ=new TwoStacksChangeToQueue();//实例化类对象
int test[]={1,2,3,4,5,6,7,8,9};//测试数组
int pushNumber[]=new int[test.length];//用数组记录入栈的元素
for(int i=0;i<test.length;i++){
TSCTQ.add(test[i]);
pushNumber[i]=stackPush.peek();
System.out.println("第"+i+"入栈的元素为:"+pushNumber[i]);
}
int peekNumber1=TSCTQ.peek();//获取栈顶元素
int []popNumber=new int[test.length];//用数组存放出栈的元素
System.out.println();
System.out.println("当前栈顶元素为:"+peekNumber1);
System.out.println();
for(int i=0;i<test.length-1;i++){
popNumber[i]=TSCTQ.poll();
System.out.println("出栈元素为:"+popNumber[i]);
}
int peekNumber2=TSCTQ.peek();
System.out.println();
System.out.println("当前栈顶元素为:"+peekNumber2);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值