难度:简单
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
注:此题考查队列和栈的知识点。
思路:栈和队列是常见的数据结构,栈是先进后出,队列是先进先出。本题主要实现队列的插入和删除过程。两个栈stack1,stack2,首先插入元素{a,b,c}到stack1中,此时stack1栈顶元素是c,stack2为空,出队时,将stack1中元素压入stack2中此时栈顶元素为a,即可出栈了——实现了先进先出。总结:出队操作——当satck2不为空时,在stack2中的栈顶元素是最先进入入队列的元素,可以直接弹出。当stack2为空时,直接把stack1中的元素依次压人stack2。 入队操作——直接插入stack1。(源于剑指offer)
class Solution { public: void push(int node) { //当stack2不为空 while(!stack2.empty()){ stack1.push(stack2.top()); stack2.pop(); } //直接插入 stack1.push(node); } int pop() { //当stack1不为空 while(!stack1.empty()){ stack2.push(stack1.top()); stack1.top(); } int result=stack2.top(); stack2.pop(); return result; } private: stack<int> stack1; stack<int> stack2; };