题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
分析:
队列的特性是:“先入先出”
栈的特性是:“先入后出”
如果把一组数据插入一个栈中,那么在这个栈中取出来的数据的顺序是不是就和原来的数据的顺序相反了,相同的,如果再把从这个栈中取出来的数据再存入另外一个栈中,那么这组数据是不是就恢复到原来的顺序了?
这就和把一个1的整数取负得到-1,再把-1取负得回1一样。
代码如下:
1.插数据先把数据插入栈1中
public void push(int node) {
stack1.push(node);
}
2.取数据就从栈2中取,而栈2的数据是从栈1中存入的,那么,取出来的数据的顺序就和栈1的相反,即和原来的数据的顺序一样了啦!这就相当于队列的特性“先入先出”一样了。
public int pop() {
if(stack2.size()<=0) {
while(stack1.size()!=0) {
stack2.push(stack1.pop());
}
}
return stack2.pop();
}