内容会持续更新,有错误的地方欢迎指正,谢谢!
前言
栈:后进先出,常用于存储函数调用时函数的参数、返回地址及临时变量等。
队列:先进先出,常用于BFS,比如:在遍历某一层节点时,把节点的子节点放进一个队列里,以备下一层节点的遍历。
但栈和队列却有互相之间的联系,请见下题。
用两个栈实现队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
小诀窍:通过具体的例子+画图的手段把抽象的问题形象化。
思路:用stack1实现队列的push操作,用stack2实现队列的pop操作。具体操作如下图:
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop()
{
if(stack2.size()==0)
while(stack1.size()!=0)
{
int temp=stack1.top();
stack1.pop();
stack2.push(temp);
}
int head=stack2.top();
stack2.pop();
return head;
}
private:
stack<int> stack1;
stack<int> stack2;
};
用两个队列实现栈
方法同理,省略。
栈和队列的题就这样吧。