博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
100-57
阅读量:6532 次
发布时间:2019-06-24

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

hot3.png

57.用俩个栈实现队列(栈、队列)。

题目:某队列的声明如下:

template<typename T> class CQueue

{
public:
      CQueue() {}
      ~CQueue() {}

      void appendTail(const T& node);  // append a element to tail

      void deleteHead();               // remove a element from head

private:

     T> m_stack1;
     T> m_stack2;
};

分析:从上面的类的声明中,我们发现在队列中有两个栈。

因此这道题实质上是要求我们用两个栈来实现一个队列。
相信大家对栈和队列的基本性质都非常了解了:栈是一种后入先出的数据容器,
因此对队列进行的插入和删除操作都是在栈顶上进行;队列是一种先入先出的数据容器,
我们总是把新元素插入到队列的尾部,而从队列的头部删除元素。

思路:

这道题目比较老了,基本的思路就是两个栈。队列入队的时候,就在其中的一个栈入栈。如果,要出队,就看另一个栈中是否有数据,如果有则出栈,如果没有,就将刚才的那个栈中的元素全部出栈,顺序压入这个栈,然后在出栈。。这样就好了。

转载于:https://my.oschina.net/dapengking/blog/94606

你可能感兴趣的文章
LocalAlloc,VirtualAlloc,malloc,new的异同
查看>>
回调函数
查看>>
win7 x64 jdk1.7.0_51
查看>>
这些开源项目,你都知道吗?(持续更新中...)[原创]
查看>>
linux中利用iptables+geoip过滤指定IP
查看>>
在myeclipse中写sql语句的细节问题
查看>>
使用ShellExecute打开目标文件所在文件夹并选中目标文件
查看>>
HDU 4614 Vases and Flowers (2013多校2 1004 线段树)
查看>>
Minix中的字符判定ctype.c
查看>>
91平台iOS接入demo
查看>>
五个优秀的硬盘检测工具
查看>>
用js实现table内容从下到上连续滚动
查看>>
基于ffmpeg的流媒体服务器
查看>>
项目积累——Blockingqueue,ConcurrentLinkedQueue,Executors
查看>>
JVM学习笔记(一)------基本结构
查看>>
活动目录之备份与恢复
查看>>
删除 Eclipse 的 configuration 目录
查看>>
MOXA的智能通信产品也大力支持WinCE.net了
查看>>
ActiveX开发知多少?
查看>>
你不得不知道的Visual Studio 2012(3)- 创建Windows应用程序
查看>>