芯片资讯
你的位置:ATMEGA系列ATMEL芯片-亿配芯城 > 芯片资讯 > 两个栈实现一个队列方法
两个栈实现一个队列方法
- 发布日期:2023-12-31 12:44 点击次数:206
栈和队列是比较基础的数据结构。无论在工作中,还是在面试中,栈和队列都用的比较多。在计算机的世界,你会看到队列和栈,无处不在。
栈:一个先进后出的数据结构
队列:一个先进先出的数据结构
栈和队列这两种数据结构,同时也存在某种联系。用栈可以实现队列,用队列也可以实现栈。
两个栈实现一个队列思路:让数据入stack1, 电子元器件PDF资料大全然后栈stack1中的数据出栈并入到栈stack2, ATMEGA系列ATMEL芯片COMATMEGA系列-ATMEL芯片然后出stack2。
代码如下:
type CQueue struct { stack1, 芯片交易网IC交易网 stack2 *list.List } //构造函数 func Constructor() CQueue { return CQueue{ stack1: list.New(),CMOS图像传感器集成电路芯片 stack2: list.New(), EEPROM带电可擦可编程存储器芯片大全 } } //尾部插入 func (this *CQueue) AppendTail(value int) { this.stack1.PushBack(value) } //头部删除,back函数返回其list最尾部的值 func (this *CQueue) DeleteHead() int { //如果第二个栈为空 if this.stack2.Len() == 0 { for this.stack1.Len() > 0 { this.stack2.PushBack(this.stack1.Remove(this.stack1.Back())) } } if this.stack2.Len() != 0 { e := this.stack2.Back() this.stack2.Remove(e) return e.Value.(int) } return -1 }
先调用 AppendTail 函数将所有元素插入 stack1,在调用 DeleteHead 函数将 stack1 中的元素转移到 stack2 中,再将元素再出栈。
再调用 DeleteHead 时,先判断 statck2 是否为空,为空则将 stack1 元素移动到 stack2 中,然后将 stack2 中的栈顶元素保存,并弹栈。
相关资讯
- 在单个器件上实现光电探测和神经形态视觉传感器两种角色的转换2024-01-04
- 用Verilog在FPGA上实现低通滤波器2024-01-02
- 如何实现一种基于FPGA全数字高码率QPSK调制设计?2024-01-02
- FPGA数字信号处理-AM调制的实现2023-12-29
- FPGA中的晶振大小多少比较合适?为什么会用到两个晶振?2023-12-29
- 如何在FPGA中实现高效的compressor加法树呢?2023-12-27