题目描述
栈的特点是:先进后出,队列的特点是先进先出,用两个栈来模拟的话,第一个栈用来存储数据,比如数据1,2,3。
第二步判断栈2是否为空,如果为空把栈1中数据添加到栈2里
最后一步把栈2中的数据取出,还是1,2,3的顺序,这样就实现了两个栈来模拟一个队列,可以看成的负负得正
class CQueue {
Stack <Integer> s1;
Stack <Integer> s2;
int size = 0;
//构造函数
public CQueue() {
s1 = new Stack <>();
s2 = new Stack <>();
}
//队列尾部插入
public void appendTail(int value) {
s1.push(value);
size++;
}
//队列头部删除
public int deleteHead() {
if(size == 0) return -1;
if(s2.isEmpty()){
while(!s1.isEmpty()){
s2.push(s1.pop());
}
}
size--;
return s2.pop();
}
}