两个栈实现一个队列 和 两个队列实现一个栈

转自:http://www.cppblog.com/csu-yx/archive/2012/03/11/167673.html

 两个栈实现一个队列
   要求:只能使用栈的pop和push,以及测试栈是否为空三个操作。
   实现思路:
      队列里面使用stack one 和 stack two。
      进队列时,直接进入栈one即可。
      出队列时,从two弹出一个元素,如果two里面的元素为空,则将one里面的元素依次弹出并压入two中,再从two弹出一个元素返回。


两个队列实现一个栈
   要求:只能使用从队列的尾部入和头部出,以及测试队列是否为空三个操作。
   实现思路:
      队列里面使用queue one 和 stack two。
      进栈时,根据当前元素是全部存储在哪个队列而选择从one或者two的尾部进入。
      出栈时,假设当前元素都存储在one里面,则不断出队列,直到队列为空之前的所有元素一次进入队列two,而one里面的最后一个元素
      作为栈弹出的值返回。
      对于当前元素是存储在哪个队列里面,可以设置变量标记,初始化时候存储在one里面,操作一次,由于元素要倒转,则存储位置会变
      一次。

你可能感兴趣的:(两个栈实现一个队列 和 两个队列实现一个栈)