栈与队列的理论基础
LeetCode 232.用栈实现队列
-
思路:
- 这是一道模拟的题,并没有涉及到具体的算法思想,考察的只是对栈和队列的掌握程度。
- 栈是先进后出,队列是先进先出的,如果只用一个栈,是无法实现队列的,所以我们不妨考虑两个栈来实现。定义2个栈,一个输入栈,一个输出栈。
- 输入push() :输入时,直接使用输入栈的push() ;即可完成输入
- 弹出pop() : 相对复杂一些的是pop(),需要用到输入栈、输出栈。必须是输出栈为空时,输入栈弹出给输出栈,此时元素顺序就达到“先进先出”的要求了。弹出栈不为空,就操作输出栈的,也是“先进先出”的要求。
- peek() : 获取队列的首个元素值。我们可以使用刚才定义的pop函数 ,int res = this->pop(); 用res接住弹出的首个的值,然后我们再把res的接住的值送回