博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer—用两个栈实现一个队列
阅读量:4214 次
发布时间:2019-05-26

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

用两个先进后出的结构来实现一个先进先出的结构 ,相当于负负得正的意思。数据先进入栈1,后进的先出,对于栈2来讲就是先进的,要后出,所以两个栈加起来就实现了后进后出,先进先出。

class Solution{
public: void push(int node) {
stack1 .push (node); } int pop() {
if(stack2 .empty()) while(!stack1 .empty ()) {
int x=stack1 .top(); stack1 .pop(); stack2.push (x); } int y=stack2.top (); stack2.pop (); return y; }private: stack
stack1; stack
stack2;};

要注意的是,栈1的元素进入栈2时,要先判断栈2中是否为空,因为每次栈1中的全部元素都要进入栈2,但是pop每次只输出一个元素,所以剩下的元素会留在栈2里。如果栈1直接进入栈2的话,就会破坏队列的顺序。所以如果栈2中有元素,先输出,再输入。

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

你可能感兴趣的文章
C++构造函数详解及显式调用构造函数
查看>>
Windows脚本 - %~dp0的含义
查看>>
lua垃圾回收机制
查看>>
Cocos2d-X之游戏存储Sqlite基础篇(四)
查看>>
findlibrary returned null产生的联想,Android ndk开发打包时我们应该如何注意平台的兼容(x86,arm,arm-v7a)
查看>>
AndroidDevTools简介
查看>>
Mac10.9.3仅安装Nginx
查看>>
Cocos2dx 3.6.1运行html5的测试例子
查看>>
MAC下安装多版本JDK和切换几种方式
查看>>
Mac OS X 下安装 Ant
查看>>
mac : Java开发环境的设置
查看>>
COCOS2D-X 3.0坐标系详解
查看>>
让Mac OS X的终端多姿多彩
查看>>
Mac添加命令别名
查看>>
mac下安装 android模拟器GenyMotion
查看>>
定制以及彩色化自己的 Mac OS X 终端
查看>>
How the Internet works
查看>>
Web工作方式
查看>>
Xcode 插件管理工具 Alcatraz
查看>>
Xcode调试技巧
查看>>