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

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

题目:

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

思路

用一个栈Stack1用作存储,Stack2用作缓存,当进入队列时,直接将值压入stack1,出队时,先将Stack1的Stack1.size()-1个值压入stack2,然后取stack1的唯一值即为出站值。
入栈时,有一个问题是如果stack2中初始有值,则先将stack2中的值压入stack1。

代码

class Solution{public:    void push(int node) {        while(!stack2.empty()){//satck2有值时,直接压入stack1            stack1.push(stack2.top());            stack2.pop();        }        stack1.push(node);    }    int pop() {        while(stack1.size()>1){//栈1出站个数为stack1.size()-1            stack2.push(stack1.top()); //将stack2作为缓冲区            stack1.pop();        }        int value=stack1.top();        stack1.pop();        /*while (!stack1.empty()){            stack2.push(stack1.top());            stack1.pop();        }        int value = stack2.top();        stack2.pop();*/        while(!stack2.empty()){//将stack2中的数据重新压缩stack1            stack1.push(stack2.top());            stack2.pop();        }        return value;    }private:    stack
stack1; stack
stack2;};

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

你可能感兴趣的文章
《融入动画技术的交互应用》主题博文推荐
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
异常 Java学习Day_15
查看>>
Mysql初始化的命令
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>