芯片资讯
你的位置:电子元器件PDF资料大全-亿配芯城 > 芯片资讯 > 用队列实现栈的两种方法
用队列实现栈的两种方法
- 发布日期:2023-12-31 11:36 点击次数:96 两个队列实现一个栈
思路:两个队列实现一个栈,使用了队列交换的思想。
代码如下:
type MyStack struct { queue1, queue2 []int } //构造函数 func Constructor() (s MyStack) { return } func (s *MyStack) Push(x int) { s.queue2 = append(s.queue2, x) for len(s.queue1) > 0 { s.queue2 = append(s.queue2, s.queue1[0]) s.queue1 = s.queue1[1:] } s.queue1, s.queue2 = s.queue2, s.queue1 } func (s *MyStack) Pop() int { v := s.queue1[0] s.queue1 = s.queue1[1:] return v } func (s *MyStack) Top() int { return s.queue1[0] } func (s *MyStack) Empty() bool { return len(s.queue1) == 0 }
先将元素入对到 queue2,此时 queue1 为0, 电子元器件PDF资料大全交换 queue2 和 queue1。此时 queue2 为0,芯片交易网IC交易网queue1 中有1个元素。
再执行push操作时, ATMEGA系列ATMEL芯片COMlen(queue1) > 0, CMOS图像传感器集成电路芯片此时再把 queue1 中的元素插入queue2 的尾部, EEPROM带电可擦可编程存储器芯片大全电子元器件PDF资料大全然后将 queue2 和 queue1 进行交换。
此时相当于,插入 queue2 的两个元素的位置发生了交换并保存在 queue1中。最后将 queue1 中的元素出队,这样就可以保证后插入的元素先出。
不断执行 push 操作就行。
一个队列实现一个栈思路:使用一个队列时,将当前插入元素前面的所有元素,先出队再入队即可。
代码如下:
type MyStack struct { queue []int } func Constructor() (s MyStack) { return } func (s *MyStack) Push(x int) { n := len(s.queue) s.queue = append(s.queue, x) for ; n > 0; n-- { s.queue = append(s.queue, s.queue[0]) s.queue = s.queue[1:] } } func (s *MyStack) Pop() int { v := s.queue[0] s.queue = s.queue[1:] return v } func (s *MyStack) Top() int { return s.queue[0] } func (s *MyStack) Empty() bool { return len(s.queue) == 0 }
每次执行 push 操作,如果queue存在元素,则将新插入元素前的所有元素出队,然后依次进队。这样新插入的元素就在队首了。
相关资讯
- MEMS工艺设计中如何实现应力匹配?2024-01-16
- FPGA数字图像显示原理与实现设计2024-01-05
- 利用EHD喷印技术在MEMS器件上实现性能优异的无掩膜沉积WO3胶体量子点2024-01-05
- 数码管的显示原理及其实现方式2024-01-03
- FPGA实现Cordic算法求解arctanθ2024-01-01
- 利用MJF实现一体化多功能可穿戴传感器的制备2023-12-31