栈队列面试题之两个队列实现一个栈

两个队列实现一个栈

  在之前我曾经实现了两个栈实现一个队列的面试题,其实思路也很简单就是充分利用栈的特性-后进先出,将输入的数据先输入栈1,将该栈1再输出到栈2,最后将栈2的数据输出,利用这个交换的特性实现两个栈实现一个队列.

  那仫如何利用两个队列实现一个栈呢?

思路分析篇:

  其实思路类似之前的面试题-两个栈实现一个队列,也是通过交换的特性:

 (1).先将要输入的数据类似 1->2->3->4->5输入到队列1中

 (2).在Pop时则需要一点技巧了,因为是模拟实现栈,所以出栈的顺序为5->4->3->2->1.如果队列1不为空则将队列1的前n-1个数据尾插到队列2中,队列1中只剩下最后一个元素n-在上面这种情况下我们将 1 2 3 4从队列1中删除尾插到队列2中,队列1中只剩下5

 (3).如果我们将队列1剩下的数据删除掉,则正好满足出栈顺序的第一个元素,此时队列1为空--如果此时再插入数据(6),我们只能将该数据尾插到队列2中(保证出栈顺序不被改变);如果我们没有将队列1中的最后一个元素n删除掉,则此时插入数据则将该数据插入到队列1中,同样是为了满足出栈顺序.


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部