* 使用队列结构实现栈结构
* 即: 外部表现的是一个栈
*
* 操作:
* 两个队列: dataQueue 和 helpQueue ,
* push进data,pop时先pop出data中的数据剩下一个弹出,弹出的数据进入入队列help * 下一轮需要交换dataQueue和helpQueue的角色,重复以上操作即可FILO
*
需要注意的问题: push操作永远都是往dataQueue中,因为涉及到每次pop时, 需要先使用 dataToHelp()来倒数据,在返回数据前要交换两个队列的角色,由exchangeQueue()实现,为 下一次pop做准备
public class QueueImplementStack {
private Queue dataQueue;
private Queue helpQueue;
public QueueImplementStack() {
//使用的是自定义的队列
this.dataQueue = new Queue(16);
this.helpQueue = new Queue(16);
}
public void push(int val){
dataQueue.push(val);
}
public int pop(){
dataToHelp();
int res = dataQueue.pop();
exchangeQueue();
return res;
}
private void dataToHelp(){
while (dataQueue.size > 1){
helpQueue.push(dataQueue.pop());
}
}
private void exchangeQueue(){
Queue tmp = dataQueue;
dataQueue = helpQueue;
helpQueue = tmp;
}
}
左神算法学习