博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《剑指Offer》用两个栈来实现队列
阅读量:4097 次
发布时间:2019-05-25

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

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

思路:

stack1的栈底作为队列的头,栈顶作为队列的尾,stack2来辅助pop。

  1. 入队列时:
    如果stack2不为空,可能是stack1过去的数据,那就就先要将stack2中的数据全都放到stack1中,然后再push。(想当于是在stack2空时,在stack1末尾push)
  2. 出队列时:
    如果stack1不为空,因为要取stack1的栈底元素,所以,要将stack1中的数据放到stack2中,再取stack2的栈顶元素stack2.top(),再pop,即是出队列。

代码实现:

class Solution{public:    void push(int node) {        while (!stack2.empty()){
//如果stack2不为空 stack1.push(stack2.top());//那就就先要将stack2中的数据全都放到stack1中 stack2.pop(); } stack1.push(node);//入队列 } int pop() { while (!stack1.empty()){
//如果stack1不为空 stack2.push(stack1.top());//要将stack1中的数据放到stack2中,再取stack2的栈顶元素stack2.top() stack1.pop();//再pop } int result = stack2.top();//出队列 stack2.pop(); return result; }private: stack
stack1; stack
stack2;};

运行结果:运行时间: <1 ms 占用内存:8568K 状态:答案正确

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

你可能感兴趣的文章
实现接口创建线程
查看>>
Java对象序列化与反序列化(1)
查看>>
HTML5的表单验证实例
查看>>
JavaScript入门笔记:全选功能的实现
查看>>
程序设计方法概述:从面相对象到面向功能到面向对象
查看>>
数据库事务
查看>>
JavaScript基础1:JavaScript 错误 - Throw、Try 和 Catch
查看>>
SQL基础总结——20150730
查看>>
SQL join
查看>>
JavaScript实现页面无刷新让时间走动
查看>>
CSS实例:Tab选项卡效果
查看>>
前端设计之特效表单
查看>>
前端设计之CSS布局:上中下三栏自适应高度CSS布局
查看>>
Java的时间操作玩法实例若干
查看>>
JavaScript:时间日期格式验证大全
查看>>
pinyin4j:拼音与汉字的转换实例
查看>>
XML工具代码:SAX从String字符串XML内获取指定节点或属性的值
查看>>
时间日期:获取两个日期相差几天
查看>>
责任链模式 Chain of Responsibility
查看>>
高并发与大数据解决方案概述
查看>>