栈和队列是比较基础的数据结构。无论在工作中,还是在面试中,栈和队列都用的比较多。在计算机的世界,你会看到队列和栈,无处不在。
栈:一个先进后出的数据结构
队列:一个先进先出的数据结构
栈和队列这两种数据结构,同时也存在某种联系。用栈可以实现队列,用队列也可以实现栈。
两个栈实现一个队列
思路:让数据入stack1,然后栈stack1中的数据出栈并入到栈stack2,然后出stack2。
代码如下:
type CQueue struct {
stack1, stack2 *list.List
}
//构造函数
func Constructor() CQueue {
return CQueue{
stack1: list.New(),
stack2: list.New(),
}
}
//尾部插入
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 中的栈顶元素保存,并弹栈。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
数据
+关注
关注
8文章
6986浏览量
88931 -
函数
+关注
关注
3文章
4325浏览量
62552 -
队列
+关注
关注
1文章
46浏览量
10891
发布评论请先 登录
相关推荐
TencentOS-tiny中环形队列的实现
1. 什么是队列队列(queue)是一种只能在一端插入元素、在另一端删除元素的数据结构,遵循「先入先出」(FIFO)的规则。 队列中有
stm32单片机如何实现一个按键切换两个程序?
stm32单片机如何实现一个按键切换两个程序? 作为一款功能强大的微控制器,STM32单片机可以支持多种应用场景,其中
两个硬盘2个系统开机切换
准备、系统安装、系统切换和注意事项。 一、硬件准备 在开始之前,我们首先要确保我们有两个可用的硬盘,每个硬盘上都可以安装一个操作系统。我们建议使用两
评论