首页 > 试题广场 >

两个队列实现栈

[编程题]两个队列实现栈
  • 热度指数:1753 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
请你仅使用两个队列实现一个后入先出的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty),输入数据保证 pop、top函数操作时,栈中一定有元素。
void push(int element) 将元素 element 压入栈顶。
int pop() 移除并返回栈顶元素。
int top() 返回栈顶元素。
bool empty() 如果栈是空的,返回 true ;否则,返回 false 。

数据范围:操作数量满足,输入的元素满足

示例:
输入:    ["MTY","PSH1","TOP","MTY"]
输出:    ["true","1","false"]
解析:
"MTY"表示当前栈是不是为空=>当前为空,返回"true"
"PSH1"表示将1压入栈中,栈中元素为1
"TOP"表示获取栈顶元素==>返回"1"
"MTY"表示当前栈是不是为空=>当前不为空,返回"false"


注意:
1.你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。
2.你所使用的语言也许不支持队列。 你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。

示例1

输入

["MTY","PSH1","TOP","MTY"]

输出

["true","1","false"]
头像 maroongh
发表于 2022-12-27 23:34:43
class Solution { public: void push(int element) { queue1.push(element); for(int i=1;i<queue1.size();i++){ queue1.pu 展开全文
头像 太阳hxy
发表于 2023-07-18 09:23:32
两个队列实现栈 思路: 由于对于队列是先进先出的结构,但是栈是后入先出的结构,所以可以用两个队列实现栈。 1.入栈操作就是将元素入队列1 2.出栈操作就是需要将队列1中的除了最后一个元素外的其他元素都移动到队列2中 3.再将队列1中的最后一个元素出栈,将队列2中的元素放回队列1中 4.获得栈顶元 展开全文
头像 牛客马克西
发表于 2023-10-16 15:44:33
#include <queue> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param order string字符串vector 展开全文
头像 追逐自由的小亮亮
发表于 2025-04-07 16:43:05
class Solution { public: void push(int element){ q1.push(element); while(!q2.empty()){ int tmp=q2.front(); 展开全文
头像 npk48
发表于 2022-04-03 01:48:26
class Solution { public:     void push(int element) {         if(queue 展开全文
头像 君无颜
发表于 2022-03-21 11:21:01
入栈和出栈,都在 queue1 中完成,而 queue2 作为中转空间。 入栈:直接入 queue1 即可。 出栈:把 queue1 中除最后一个元素外的所有元素都移动到 queue2 中,再将 queue1 中的元素出队,此时即出栈;接着将 queue2 中的所有元素移动到 queue1 中。 展开全文
头像 szazone
发表于 2025-05-07 14:43:48
#include <stdbool.h> #include <stdlib.h> #include <string.h> typedef struct __StackList_ts { int value; struct __StackList_t 展开全文
头像 听众射手
发表于 2024-03-14 09:23:16
先进先出,变先进后出。两个队列,push时,push到q1pop时,先将q1的元素转移到q2中,最终q1只剩一个元素,长度为1,此时即为最后push进来的,后进先出pop完成后,需要交换q1和q2,方便下次poppush操作始终在q1 public class MyStack { // 进行 展开全文
头像 姐姐的遮阳伞
发表于 2022-04-05 16:26:49
import java.util.*; public class Solution { Queue<Integer> queue1 = new LinkedList(); Queue<Integer> queue2 = new LinkedList(); 展开全文
头像 LucX
发表于 2022-02-20 15:37:59
队列部分可以跳过↓ struct Node{ int data; struct Node *next; }; struct QNode{ struct Node *rear; // add struct Node *front; // delete }; type 展开全文