记得之前做过这个题目,但是后来忘记了。这次特意的mark一下。

(1)怎么用两个队列去模拟一个堆栈

     如下图所示,我们有两个队列。每个时刻总有一个队列是空的,每次新插入的数据,就存放到空的队列里面,然后将另外一个队列里面是所有的数据依次出栈,然后压入到刚刚存放的队列。这样就ok了。

怎么用队列模拟堆栈

(2)怎么用一个队列去模拟一个堆栈 

         如果是一个队列的话,也是可以的,思路是一样的。只不过是每次新压入一个数据,这个数据前面的所有的数据都要先出队列,然后再进队列,让刚刚新添加的数据变成队列的最前面的数据。

怎么用队列模拟堆栈

 (3)怎么用两个堆栈去模拟队列 

        用两个堆栈,一个是空的,一个是存放之前已经存放好的数据,例如下图,S1是已经按照顺序放好的数据,我们要插入一个新的数据,首先要讲S1的数据转移到S2,让原本是数据倒序,然后插入新的数据到S1里面,然后将S2里面的数据倒腾会S1 这样的话,就是新的序列了。缺点是原本存在好的数据要入栈,出栈两次。 

怎么用队列模拟堆栈

 

   

相关文章: