首页 > 试题广场 >

由两个栈组成的队列

[编程题]由两个栈组成的队列
  • 热度指数:7562 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
用两个栈实现队列,支持队列的基本操作。

输入描述:
第一行输入一个整数N,表示对队列进行的操作总数。

下面N行每行输入一个字符串S,表示操作的种类。

如果S为"add",则后面还有一个整数X表示向队列尾部加入整数X。

如果S为"poll",则表示弹出队列头部操作。

如果S为"peek",则表示询问当前队列中头部元素是多少。


输出描述:
对于每一个为"peek"的操作,输出一行表示当前队列中头部元素是多少。
示例1

输入

6
add 1
add 2
add 3
peek
poll
peek

输出

1
2

备注:
1<=N<=1000000

-1000000<=X<=1000000

数据保证没有不合法的操作
头像 minghai7
发表于 2019-09-02 13:05:51
import java.util.*; public class Main{ static Stack<Integer> stack1 = new Stack<Integer>(); static Stack<Integer> stack2 = n 展开全文
头像 无语的花生米复盘中
发表于 2022-03-20 19:00:13
package main import ( "bufio" "fmt" "os" "strconv" "strings" ) func main() { numofAction := 0 l := &stacklist{[]int{}, []int{}} fmt.Scanl 展开全文
头像 牛客583936202号
发表于 2021-10-21 17:53:59
#include<bits/stdc++.h> using namespace std; class MyQueue{ public: stack<int>s1; stack<int>s2; MyQueue(){} void 展开全文
头像 牛客695415901号
发表于 2024-04-06 23:00:12
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { //第一个栈正常add数据 static Stack<Integer> stack1 = new Stack&l 展开全文
头像 yechena
发表于 2022-01-02 23:55:46
两个栈实现队列代码 stk存储入栈数据 tmp倒置stk数据 队列先进先出,所以必须使用另外一个栈对原来栈数据进行倒置 1 add(?) 不影响,直接入栈 2 peek()与poll()操作几乎相同,必然是要从tmp中访问数据。 如果tmp中为空:则必须将原来stk中数据一次性去全部入tmp栈,因 展开全文
头像 莫问前路无知己
发表于 2022-03-16 21:13:25
由两个栈组成的队列 一个栈专门进栈push_stack,一个栈专门出栈pop_stack 形成队列先进先出原则 如果要出队,需要将push_stack所有元素压入 pop_stack 再弹出 如果 需要将push_stack的元素压入pop_stack中,需要保证pop_stack为空 例如 展开全文
头像 LiQiang03
发表于 2022-02-16 11:04:59
双栈实现队列 使用两个栈,一个是pushStack, 另一个是pollStack; 1. 进队列规则 观察pollStack是否为空,不空,则将元素移动到pushStack,保证顺序不乱 pollStack为空,则直接向pushStack中添加元素 2. 出队列规则 观察pushStack是否 展开全文
头像 哈哈~柳暗花明
发表于 2020-07-24 11:44:12
经测试,pop,del,remove性能差不多,切片较低 class Queue(): def __init__(self): self.queue = [] def add(self, value): self.queue.append(value) 展开全文
头像 活心真如
发表于 2022-06-08 13:08:03
书上给的代码有点问题,得按照他说的逻辑自己写,要注意以下两点: stackPop不为空,stackPush不能压入stacjPop栈中 stackPush压入stacjPop栈中时,要一次性压完所有数据 所以书上的add代码要改,要加一个判断s 展开全文
头像 胖橘不乖
发表于 2022-05-24 14:41:51
import java.util.*; public class Main{     public static void dfs(int n,ArrayList<String> s,ArrayList<Integer> stack){   &n 展开全文