码迷,mamicode.com
首页 > 其他好文 > 详细

用两个栈实现队列

时间:2018-06-20 14:38:31      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:TE   pop   src   特点   入队   先进先出   实现   队列   queue   

栈的特点是后进先出,即最后别呀如栈的元素会第一个被弹出(pop)。

队列是另外一个很重要的数据结构。和栈不同的是,队列的特点是先进先出,即第一个进入队列的元素将会第一个出来。

题目:用两个栈是新啊一个队列。队列的声明那个如下,请实现它的两个函数apeendTail和deleteHead,分别完成在对垒尾部插入节点和在队列头部删除节点的功能。

解题思路:一个队列包含了两个栈stack1和stack2,因此这道题的意图是要求我们操作这两个“先进后出”的栈实现一个“先进先出”的队列CQueue.

在stack1中按顺序压入“a,b,c”,把stack1中的元素逐个弹出并压入到stack2中“c,b,a”.这样逐个弹出就可以了。

总结删除一个元素的步骤:当stack2中不为空时,在stack2中的栈顶元素是最先进入队列的元素,可以弹出。如果stack2为空时,我们把stack1中的元素逐个弹出并压入stack2。由于先进入队列的元素被压到stack1的地段,经过弹出和压入之后就处于stack2的顶端了,又可以直接弹出。

过程如下图所示

技术分享图片

 

用两个栈实现队列

标签:TE   pop   src   特点   入队   先进先出   实现   队列   queue   

原文地址:https://www.cnblogs.com/zhibei/p/9203105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!