Letcode 剑指offer 09:用两个栈实现队列
appendTail:相当于进队列
deleteHead:相当于出队列
通过栈的先进后出实现队列的先进先出
代码:
class CQueue {
//申明两个栈
Stack<Integer> s1 = new Stack<Integer>();
Stack<Integer> s2 = new Stack<Integer>();
public CQueue() {
}
public void appendTail(int value) {
//进队列
s1.push(value);
}
public int deleteHead() {
if(s1.empty()&&s2.empty()){
return -1;
}
if(s2.empty()){
while(!s1.empty()){
int temp = s1.pop();
s2.push(temp);
}
}
return s2.pop();
}
}
/**
* Your CQueue object will be instantiated and called as such:
* CQueue obj = new CQueue();
* obj.appendTail(value);
* int param_2 = obj.deleteHead();
*/
这篇博客介绍了一种使用两个栈来模拟队列数据结构的方法。在C++中,通过`appendTail`函数将元素进队,利用栈的后进先出特性;而`deleteHead`函数在栈不为空时,将栈1的元素依次弹出并压入栈2,从而实现队列的出队操作。这种实现方式巧妙地利用了栈和队列的特性,实现了队列的先进先出(FIFO)原则。
6543

被折叠的 条评论
为什么被折叠?



