栈实现队列、队列实现栈

栈实现队列

整体思路就是两个栈中的元素相互倒,来实现队列先进先出、后进后出的模式

  • s1是入栈的,s2是出栈的。
  • 入队列,直接压到s1是就行了
  • 出队列,先把s1中的元素全部出栈压入到s2中,弹出s2中的栈顶元素;再把s2的所有元素全部压回s1中
    图解1:
    栈实现队列、队列实现栈_第1张图片
    图解2:
    栈实现队列、队列实现栈_第2张图片
    图解3:
    栈实现队列、队列实现栈_第3张图片

队列实现栈

  • q1是专职进出栈的,q2只是个中转站
  • 入栈:直接入队列q1即可
  • 出栈:把q1的除最后一个元素外全部转移到队q2中,然后把刚才剩下q1中的那个元素出队列。之后把q2中的全部元素转移回q1中

图解1:
栈实现队列、队列实现栈_第4张图片
图解2:
栈实现队列、队列实现栈_第5张图片
参考链接:https://www.cnblogs.com/kaituorensheng/archive/2013/03/02/2939690.html

你可能感兴趣的:(常见算法,队列,queue,栈)