用两个栈实现一个队列,首先我们先明确栈和队列的特点,栈是“后进先出”,而队列是“先进先出”。
下面详细分析一下整个过程:
下面给出一种算法思想:
始终维护s1作为存储空间,以s2作为临时缓冲区
入队:将元素都压入s1中;
出队:假如s1中有n个元素,将s1中的n-1个元素逐个“倒入”(弹出并压入)s2,原在s1栈底的那个元素可以直接弹出作为出队元素返回,这样可以减少一次push操作,之后再将s2中的元素逐个“倒回”s1中。
用两个栈实现一个队列,首先我们先明确栈和队列的特点,栈是“后进先出”,而队列是“先进先出”。
下面详细分析一下整个过程:
下面给出一种算法思想:
始终维护s1作为存储空间,以s2作为临时缓冲区
入队:将元素都压入s1中;
出队:假如s1中有n个元素,将s1中的n-1个元素逐个“倒入”(弹出并压入)s2,原在s1栈底的那个元素可以直接弹出作为出队元素返回,这样可以减少一次push操作,之后再将s2中的元素逐个“倒回”s1中。