当前位置: 首页 > news >正文

可以网站可以做免费的文案广告语微网站自助建站后台

可以网站可以做免费的文案广告语,微网站自助建站后台,舆情系统招标,网站更换服务器影响题目描述 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素…

题目描述

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:
void push(int x) 将元素 x 压入栈顶。
int pop() 移除并返回栈顶元素。
int top() 返回栈顶元素。
boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:
你只能使用队列的标准操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。
你所使用的语言也许不支持队列。 你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。示例:输入:
["MyStack", "push", "push", "top", "pop", "empty"]
[[], [1], [2], [], [], []]
输出:
[null, null, null, 2, 2, false]解释:
MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // 返回 2
myStack.pop(); // 返回 2
myStack.empty(); // 返回 False

思路

用单个队列实现了栈的行为。栈是一种后入先出(LIFO)的数据结构,通常支持 push、pop、top 和 empty 操作。在这个实现中,通过对队列的操作,模拟了栈的行为。

类定义和构造函数

class MyStack {
public:std::queue<int> que;MyStack() {}

MyStack 类中定义了一个公有成员 que,类型为 std::queue,用于存储栈中的元素。
构造函数 MyStack() 是一个空构造函数,不进行任何操作。队列 que 的初始化由其默认构造函数处理。

push()

    void push(int x) {que.push(x);}

push(int x) 方法直接将元素 x 加入队列的尾部。在栈的行为中,这将是最后一个被弹出的元素,符合后入先出的特性。

pop()

    int pop() {for(int i = 0; i < que.size() - 1; i++){que.push(que.front());que.pop();}int result = que.front();que.pop();return result;}

pop() 方法移除并返回栈顶元素。为了达到这个目的,首先将队列前面的元素(除最后一个元素外)依次出队并重新入队到队列尾部。这样,原本的最后一个元素(栈顶元素)就移到了队列的前端,可以通过 que.pop() 直接移除并返回。
循环 for(int i = 0; i < que.size() - 1; i++) 确保除了最后一个元素,其他所有元素都被重新排列。

top()

    int top() {return que.back();}

top() 方法返回栈顶元素的值,但不移除它。由于队列的 back() 方法可以直接访问队尾元素,这里的队尾元素正是最后入栈的元素,因此可以直接返回。

empty()

    bool empty() {return que.empty();}

empty() 方法检查栈(队列)是否为空。如果队列为空,则栈也为空,返回 true;否则返回 false。

完整代码

#include<stack>
#include<queue>
#include<iostream>class MyStack {
public:std::queue<int> que;MyStack() {}void push(int x) {que.push(x);}int pop() {for(int i = 0; i < que.size() - 1; i++){que.push(que.front());que.pop();}int result = que.front();que.pop();return result;}int top() {return que.back();}bool empty() {return que.empty();}
};int main() {MyStack myStack;myStack.push(1);myStack.push(2);std::cout << "Top: " << myStack.top() << std::endl;  // 返回 2std::cout << "Pop: " << myStack.pop() << std::endl;  // 返回 2std::cout << "Empty: " << (myStack.empty() ? "true" : "false") << std::endl;  // 返回 falsereturn 0;
}

时间复杂度: pop为O(n),其他为O(1)
空间复杂度: O(n)

http://www.sczhlp.com/news/149679/

相关文章:

  • 网站 手机验证码 实例宁波新闻头条最新消息
  • 临沂网站建设哪家公司好设计公司怎么接业务
  • 佛山微信网站设计网站开发用什么技术asp
  • 电商平台网站技术开发呼伦贝尔市建设局网站
  • 黄山网站开发学做网站基础知识
  • 网站整体设计风格学网页设计有用吗
  • 从零构建能自我优化的AI Agent:Reflection和Reflexion机制对比详解与实现
  • 响应式网站 外贸招标网会员共享
  • 二级网站建设检查评比方案加油站网站建设
  • 河南企业网站建设公司网站不想被百度抓取
  • 一般制作一个网站要多久云南企业展厅设计公司
  • 郑州优化网站公司招聘网站做一下要多少钱
  • 怎么注册网站 个人南山高端网站建设
  • 唐山住房和城乡建设厅网站深圳创新投资公司官网
  • 欧美网站建设排名大全建设一个视频网站的成本
  • iis .net 网站架设wordpress 标签井号取消
  • 宁津网站设计中国手工加工网免费供货
  • 哪个网站做网销更好长沙水业网站是哪家公司做的
  • 男人做想看的免费网站做网站推广有用吗
  • 个人建网站多少钱大岭山网站仿做
  • 现在学网站开发三门峡网站建设价格
  • 网站怎么做背景图片红色大气企业网站
  • 绍兴企业建站模板兰州装修公司口碑排名
  • 网站红色模板ps网站轮播图怎么做
  • 阿里云网站建设优化北京外包公司名单
  • 咸阳专业网站开发哪家好苏州网站建设建站网
  • 丽水网站建设报价帷客分享 wordpress
  • 网络营销渠道策略长沙正规竞价优化服务
  • 做ipad的网站尺寸是多少河北斯皮尔网站建设
  • 免费域名申请哪个网站好wordpress 布局推荐