Java和Cpp中栈与队列的区别

  • 题目
  • 思路与算法
  • 代码实现
  • 对比分析两种语言中栈和队列的区别

题目

1.225. 用队列实现栈
2.232. 用栈实现队列
3.155. 最小栈

思路与算法

  1. 三道简单力扣习题之前用Java提交过题解,这次用Cpp来进行提交,从而加深二者的stl或者是对应的util工具类中的方法的使用。

代码实现

1.225. 用队列实现栈

class MyStack {public:/** Initialize your data structure here. */MyStack() {}/** Push element x onto stack. */void push(int x) {std::queue<int> tmp_queue;tmp_queue.push(x);while (!_data.empty()) {tmp_queue.push(_data.front());_data.pop();}while (!tmp_queue.empty()) {_data.push(tmp_queue.front());tmp_queue.pop();}}/** Removes the element on top of the stack and returns that element. */int pop() {int x = _data.front();_data.pop();return x;}/** Get the top element. */int top() {return _data.front();}/** Returns whether the stack is empty. */bool empty() {return _data.empty();}
private:std::queue<int> _data;
};/*** 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();*/

2.232. 用栈实现队列

class MyQueue {public:/** Initialize your data structure here. */MyQueue() {}/** Push element x to the back of queue. */void push(int x) {std::stack<int> tmp_stack;while (!_data.empty()) {tmp_stack.push(_data.top());_data.pop();}tmp_stack.push(x);while (!tmp_stack.empty()) {_data.push(tmp_stack.top());tmp_stack.pop();}}/** Removes the element from in front of queue and returns that element. */int pop() {int x = _data.top();_data.pop();return x;}/** Get the front element. */int peek() {return _data.top();}/** Returns whether the queue is empty. */bool empty() {return _data.empty();}
private:std::stack<int> _data;
};/*** Your MyQueue object will be instantiated and called as such:* MyQueue* obj = new MyQueue();* obj->push(x);* int param_2 = obj->pop();* int param_3 = obj->peek();* bool param_4 = obj->empty();*/

3.155. 最小栈

class MinStack {public:/** initialize your data structure here. */MinStack() { }void push(int x) {_data.push(x);if (minStack.empty()) {minStack.push(x);} else {if (x > minStack.top()) {x = minStack.top();}minStack.push(x);}}void pop() {_data.pop();minStack.pop();}int top() {return  _data.top();}int getMin() {return minStack.top(); }
private:std::stack<int> _data;std::stack<int> minStack;
};/*** Your MinStack object will be instantiated and called as such:* MinStack* obj = new MinStack();* obj->push(x);* obj->pop();* int param_3 = obj->top();* int param_4 = obj->getMin();*/

对比分析两种语言中栈和队列的区别

  1. 栈的区别

  2. 队列的区别

20200927:Java和Cpp中栈与队列的区别相关推荐

  1. Java中栈和队列的用法 Stack And Queue

    Java中栈和队列的用法 栈的实现 使用Java的集合类Stack boolean isEmpty();//判断当前栈是否为空,等价于empty(); synchronized E peek();// ...

  2. java 栈队列区别是什么意思_java栈和队列的区别

    Java中用LinkedList实现栈和队列_IT/计算机_专业资料.笔记摘录 栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只是其运算规则 较线性表有更多的限制,故...... 闽江学院电 ...

  3. 在JAVA中用两个栈实现队列的功能

    此问题的实现可以加深对栈和队列的理解,让我们先来认识一下栈和队列 1.Stack栈 栈(Stack)是一种后进先出(LIFO)的数据结构 Stack只有入栈和出栈的操作,常用方法有: (1)把元素压栈 ...

  4. 堆、栈、队列的区别和联系

    数据结构中的堆.栈和队列 堆:堆是一种经过排序的树形数据结构,每个结点都有一个值.通常我们所说的堆的数据结构,是指二叉堆.堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆.由于堆的这个 ...

  5. 栈和队列的区别,栈和堆得区别

    栈和队列的区别: 1.栈是先进后出.队列是先进先出. 2.栈只允许在一端进行插入和删除,队列则在表的一段插入另一端删除. 3.在栈中遍历数据需要扫描全部数据,所以比较慢.而在队列中可以从两端进行所以速 ...

  6. 栈和队列的基本操作(栈和队列的区别)

    数据结构中的栈与内存中的栈的不同 一.数据结构中的堆栈 在数据结构中的堆栈,实际上堆栈是两种数据结构:堆和栈.堆和栈都是一种数据项按序排列的数据结构. 1.栈就像装数据的桶或箱子 我们先从大家比较熟悉 ...

  7. 【Java】泛型中 extends 和 super 的区别?

    <? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. ...

  8. 栈和队列的区别,栈和堆的区别

    栈和队列的区别: 栈的插入和删除操作都是在一端进行的,而队列的操作却是在两端进行的. 栈是先进后出,队列是先进先出. 栈只允许在表尾一端进行插入和删除,队列只允许在表尾一端进行插入,在表头一端进行删除 ...

  9. 【java】深入理解Java JVM虚拟机中init和clinit的区别

    1.概述 转载并且补充:深入理解Java JVM虚拟机中init和clinit的区别 原创 之所以来转载一下,是因为,有个学弟问了这个问题 这个知识点,回顾起来应该是我看 深入理解Java JVM虚拟 ...

最新文章

  1. Java黑皮书课后题第5章:5.10(找出能被5和6整除的数)编写程序,显示从100到1000之间所有能被5和6整除的数,每行显示10个。数字之间用一个空格字符隔开
  2. Golang——结构体创建与初始化、结构体与数组、结构体与切片、结构体与map、结构体作为函数参数、结构体方法、结构体方法继承
  3. MS CRM 2011 如何创建基于SQL的自定义报表,并使用数据预筛选(Pre-Filtering)
  4. 模式实例之——访问者实例
  5. 如何为curl命令添加数据?
  6. 让你口水不停的最新台湾美食推荐
  7. 智慧校园中教务管理系统功能需求思路设计分享来自博奥智源
  8. 深析Vue双向数据绑定(MVVM模型)
  9. R语言windows函数自动生成可视化图像画布框、使用plot函数可视化数据点图、使用type参数指定数据点为实线
  10. 大学英语(第一册)复习(原文及全文翻译)——Unit 5 - A Miserable, Merry Christmas(又悲又喜的圣诞节)
  11. 债券数据集:绿色债券数据集、历时新发、发行债券、DCM定价估值四大指标数据
  12. 微信小程序期末大作业-天使童装商城
  13. SAP财务凭证的冲销
  14. python数据可视化字段,Python数据可视化
  15. 计算机cast函数是什么意思,CAST()函数
  16. live555 日志
  17. 2022-2028全球小型建筑设备行业调研及趋势分析报告
  18. UVa 1471 Defense Lines - 线段树 - 离散化
  19. 全国计算机等级考试桑葚,高负荷学习眼睛干涩疲劳?省考试院推荐6大营养果蔬护眼有方!附食谱...
  20. 【Java基础[JDK的安装与配置 (1.8及以上)]】

热门文章

  1. 火速收藏!Android 开发者必会的内存泄漏指南
  2. 搜索引擎难做,为什么微软必应活了下来?
  3. Linux 超全实用指令大全 | CSDN 博文精选
  4. 网易游戏回应裁员 10%;字节跳动秘密研发手机;iOS 13 beta 5 发布 | 极客头条
  5. Node.js 与 JavaScript 基金会正式合并,JS 喜提新主场
  6. 微软原生 Notepad 融入 VS Code 才是出路?
  7. “鸡肋”的百度,掉队了 BAT? | 畅言
  8. 马斯克澄清“我不是中本聪”,比特币创始人究竟是谁?
  9. 第 8 章 建造者模式
  10. 数据结构与算法python语言描述答案_《数据结构与算法Python语言描述》习题第二章第一题(python版)...