芯片资讯
你的位置:电子元器件PDF资料大全-亿配芯城 > 芯片资讯 > 用队列实现栈的两种方法
用队列实现栈的两种方法
- 发布日期:2023-12-31 11:36 点击次数:107 两个队列实现一个栈
思路:两个队列实现一个栈,使用了队列交换的思想。
代码如下:
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
