博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
225. 用队列实现栈
阅读量:4091 次
发布时间:2019-05-25

本文共 1321 字,大约阅读时间需要 4 分钟。

一、题目:

使用队列实现栈的下列操作:

push(x) -- 元素 x 入栈

pop() -- 移除栈顶元素

top() -- 获取栈顶元素

empty() -- 返回栈是否为空

注意:

你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。

你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。

你可以假设所有操作都是有效的(例如, 对一个空的栈不会调用 pop 或者 top 操作)。

二、解题

 因为原始的queue是先进先出,所以要通过queue实现栈,在每一次push进新元素x时,需将前面的元素移到x的后面,可以巧妙地使用q.push(q.front()); q.pop(); 代码实现如下:

class MyStack {    queue
nums;public: /** Initialize your data structure here. */ MyStack() { //nothing to do } /** Push element x onto stack. */ void push(int x) { nums.push(x); //将前面的size-1个元素放到后面去 for(int i = 0; i < nums.size() - 1; i++){ nums.push(nums.front()); nums.pop(); } } /** Removes the element on top of the stack and returns that element. */ int pop() { int num = nums.front(); nums.pop(); return num; } /** Get the top element. */ int top() { return nums.front(); } /** Returns whether the stack is empty. */ bool empty() { return nums.empty(); }};/** * Your MyStack object will be instantiated and called as such: * MyStack* obj = new MyStack(); * obj->push(x); * int param_2 = obj->pop(); * int param_3 = obj->top(); * bool param_4 = obj->empty(); */

 

转载地址:http://brcii.baihongyu.com/

你可能感兴趣的文章
教你一招搞定 Homebrew 下载加速!
查看>>
一个神奇的开源项目:让照片快速 3D 化!
查看>>
你肯定没用过这个全新的 Git 客户端工具!
查看>>
学生党 10 分钟搭了一个网站,后来净赚 100 万美金....
查看>>
雷军 1994 年写的代码,不服不行...
查看>>
GitHub 热榜:印度小哥在《我的世界》搭建神经网络,火爆全网!
查看>>
GitHub 开源神器:堪称作业终结者!
查看>>
Spring 面试五连问,问到你怀疑人生!
查看>>
C++ 是如何从代码到游戏的?
查看>>
博士学位真的那么重要吗?上交大博士亲述科研心路,获 4 万高赞,网友:这是知乎最好的回答...
查看>>
GitHub Star 过万,这款神器必须安利!
查看>>
开源神器:可快速将真实物件复制粘贴到电脑上!
查看>>
开源神器:如何用一行代码快速下载 B 站等全网视频!
查看>>
它号称是全世界最好的翻译工具!
查看>>
一个 Java 顶级高手是怎样炼成的?(附思维导图与学习资料)
查看>>
《王者荣耀》发布的绝悟 AI,到底有多强...
查看>>
一位中国博士把整个 CNN 给可视化后,火了!
查看>>
18 禁警告!一万张照片投喂,让这个工具能自动画丁丁,数据集还开源了
查看>>
GitHub 发布重磅更新:你电脑上的 IDE 可以删了?!
查看>>
Google 出王炸!Meet 免费支持 100 人同时在线,与 Zoom 正面刚
查看>>