博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试题07_用两个栈实现队列——剑指offer系列
阅读量:4878 次
发布时间:2019-06-11

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

题目描写叙述:

用两个栈实现一个队列。

队列的声明例如以下,请实现它的两个函数appendTail 和 deleteHead。分别完毕在队列尾部插入结点和在队列头部删除结点的功能。

解题思路:

栈的特性是后进先出,而队列的特性是先进先出。

因此,用两个栈来模拟队列的功能,在输入数据的时候,一次压入栈A。当要输出数据的时候,则将栈A的数据所有依次弹出,压入栈B 。

这样。栈B 栈顶就是队列头元素。依次从栈B弹出,即队列的出队操作。

每次仅仅有当栈B 已经出栈全然了。才进行下一次的B栈入栈。

代码实现:

class Solution{public:    void push(int node) {        stack1.push(node);    }    int pop() {        if(stack2.size()<= 0)        {        	    while(stack1.size()>0)                {                    int num = stack1.top();                    stack1.pop();                	stack2.push(num);                }        }                int ans = stack2.top();        stack2.pop();        return ans;    }private:    stack
stack1; stack
stack2;};

转载于:https://www.cnblogs.com/zfyouxi/p/5396671.html

你可能感兴趣的文章
递推和迭代的比较
查看>>
12306HTTP请求过程
查看>>
加快mysql数据库导入
查看>>
位运算
查看>>
有意思的网站
查看>>
HTML 常见代码整合;
查看>>
【php】文件系统
查看>>
【linux】阿里云防火墙相关
查看>>
Cadence Allegro小技巧-从外部文本文件添加文本
查看>>
OpenGL 头文件,库文件
查看>>
点与不规则图形关系判断
查看>>
linux不开启图形界面
查看>>
菜鸟学习SSH(二)——Struts国际化
查看>>
iOS 自定义控件--重写一些方法
查看>>
C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)...
查看>>
javascript中的事件Event(一)
查看>>
5、泛型
查看>>
第二次冲刺作业
查看>>
【转】HTML, CSS和Javascript调试入门
查看>>
折线图-小案例
查看>>