Stack、Queue
栈:后进先出,只可插入或取出栈顶元素
队列:先进先出,只可取出队首元素,插入队尾元素
栈和队列的实现很相似,两种数据结构是否可以互相转换?
答案是肯定的,栈与队列相互转换可以加深栈与队列的理解
Stack->Queue
用栈实现队列—>用后进先出实现先进先出
方案:利用两次后进先出(栈)即可实现先进先出(队列)
比较简单,直接看图应该就可以看懂如何实现,如图:
![](https://i-blog.csdnimg.cn/blog_migrate/6a78f4e9dabee9d0c4755762fe096fda.png)
Queue->Stack
用队列实现栈—>用先进先出实现后进先出
方案:利用两次先进先出(队列)实现后进先出(栈)
1 需要两个队列,两个队列指针,初始:队列指针(out)指向队列1,队列指针(in)指向队列2
2 首先数据元素全部进入队列out
3 需要弹出一个元素,队列out中N-1个数据进入队列in,将队列out的元素出队
4 in 与 out 交换指向队列
需要弹出元素 重复 2-4步骤
如图:
![](https://i-blog.csdnimg.cn/blog_migrate/4501d444f6643a27372cd7b7ee62e1a1.png)