前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >go 环形队列

go 环形队列

作者头像
solate
发布于 2022-06-12 06:44:45
发布于 2022-06-12 06:44:45
1.1K00
代码可运行
举报
文章被收录于专栏:solate 杂货铺solate 杂货铺
运行总次数:0
代码可运行

环形队列

队列又称为“先进先出”(FIFO)线性表,限定只能在队尾插入,在队首删除

  1. 顺序队列:顺序存储结构,数组
  2. 链队列:链表结构。

内存上并没有环形的结构,因此环形队列实际上是数组的线性空间来实现的。

当数据到了尾部该如何处理呢?它将转回到原来位置进行处理,通过取模操作来实现

golang环形队列实现

什么是环形队列

如图所示,一个环形队列.含有二个指针: 队列头指针,队列尾指针.

实现环形队列图示过程

初始化一个数组大小为6的环形队列, 头指针front=0, 尾指针rear=0, 刚好front=rear =0的状态,表示环形队列为空.

2.向环形队列里插入1个元素,则rear指针移动一格,front=0,rear=1

3.继续添加a2,a3,a4,a5元素,rear指针指到末尾处,front=0, reat=5

4.如果再继续添加a6元素,则rear=6,大于数组大小,发生数组溢出.

5.如上图所示添加a6时,rear指针发生溢出.我们使用一个小技巧,当rear=6时与数组大小6进行取模, (rear+1) % maxLen,让rear指针回到开始处rear=0,问题来了,我 们无法判断数组是否满?因为初始化时front=rear=0, 现在数组满也是front=rear=0

6.解决以上问题有三种办法,我们采用第3种方法实现.

使用第3种方法: 即当(rear+1) % maxLen == front时,判断环形数组满,则无法添加元素

实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package circleQueue

import (
	"errors"
)

// 环形队列
type CircleQueue struct {
	length int   // 队列长度
	head   int   // 指向队列首 0
	tail   int   // 指向队列尾 0
	data   []any // 数组 => 模拟队列
}

func New(length int) *CircleQueue {
	return &CircleQueue{
		length: length,
		data:   make([]any, length),
	}
}

// 队列是否为空
func (s *CircleQueue) IsEmpty() bool {
	return s.head == s.tail
}

// 队列是否已经满了, 采用空一格的方式
func (s *CircleQueue) IsFull() (res bool) {
	return s.head == (s.tail+1)%s.length
}

// 环形队列长度
func (s *CircleQueue) Len() (res int) {
	return (s.tail - s.head + s.length) % s.length
}

// 队列尾新增元素
func (s *CircleQueue) Push(val any) (b error) {
	if s.IsFull() {
		return errors.New("队列已满!")
	}
	s.data[s.tail] = val
	s.tail = (s.tail + 1) % s.length
	return
}

// 队列头弹出元素
func (s *CircleQueue) Pop() (val any, err error) {
	if s.IsEmpty() {
		return nil, errors.New("队列为空!")
	}
	val = s.data[s.head]
	s.head = (s.head + 1) % s.length
	return
}

func (s *CircleQueue) Each(fn func(node any)) {
	for i := s.head; i < s.tail+s.length; i++ {
		fn(s.data[i%s.length])
	}
}

// 清空
func (s *CircleQueue) Clear() {
	s.head = 0
	s.tail = 0
	s.data = make([]any, s.length)
}

测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package circleQueue

import (
	"fmt"
	"testing"
)

func TestNew(t *testing.T) {

	queue := New(5)
	err := queue.Push(1)
	err = queue.Push(2)
	err = queue.Push(3)
	err = queue.Push(4)
	if err != nil {
		t.Error(err)
	}
	err = queue.Push(5)
	if err != nil {
		t.Error(err)
	}

	fn := func(node any) {
		fmt.Println(node)
	}
	queue.Each(fn)

	t.Log("Push End: ")
	val, err := queue.Pop()
	if err != nil {
		t.Error(err)
		return
	}
	t.Log(val)
	t.Log("Pop End: ")

	err = queue.Push(6)
	if err != nil {
		t.Error(err)
	}
	t.Log("Len: ", queue.Len())
	t.Log("Each End: ")

	queue.Pop()
	queue.Pop()
	t.Log("Len: ", queue.Len())
	queue.Push(7)
	queue.Push(8)
	t.Log("Len: ", queue.Len())

	queue.Clear()
	t.Log("Clear End: ")
	t.Log("Len: ", queue.Len())

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
高通发布第三代骁龙7:GPU性能大涨50%,配备骁龙8系同款三ISP
此次高通发布的第三代骁龙7,采用了台积电4nm制程工艺,CPU为4大核+4小核设计,由1个2.63 GHz核心、3个2.40 GHz核心和4个1.80 GHz核心组成。官方表示,其CPU性能相比第一代骁龙7提升了15%。
芯智讯
2023/11/20
8700
高通发布第三代骁龙7:GPU性能大涨50%,配备骁龙8系同款三ISP
华为麒麟 970 发布,超越高通骁龙 835 了吗?
今日(9 月 2 日)晚间,华为在德国 IFA 2017 大会上正式发布了新一代麒麟 970 芯片。 配置 麒麟 970 采用了台积电 10 nm 工艺,包含 55 亿晶体管(骁龙 835 是 31 亿颗,苹果 A10 是 33 亿颗),功耗降低了 20%。 CPU 部分变化不大,依旧采用 8 核心设计,4xA73 2.4GHz + 4xA53 1.8GHz。GPU 则升级到了 Mali-G72 MP12(12核心),与上一代相比,图形处理性能提升20%,能效提升50%。 基带部分,麒麟 9
AI科技大本营
2018/04/26
1.1K0
华为麒麟 970 发布,超越高通骁龙 835 了吗?
骁龙最强AI芯能力下放:小旗舰8s发布,端侧运行10B大模型,小米Civi首发
但AI性能丝毫不减:支持100亿参数大模型端侧运行,是骁龙8Gen 3同款配置。可运行Baichuan-7B,Google Gemini Nano、Llama2和ChatGLM等模型。
量子位
2024/03/20
1770
骁龙最强AI芯能力下放:小旗舰8s发布,端侧运行10B大模型,小米Civi首发
支持百亿参数大模型、卢伟冰现场官宣小米首发,高通骁龙8s Gen3发布
3 月 18 日,高通正式推出了第三代骁龙 8s 移动平台(骁龙 8s Gen3),凭借旗舰级的 CPU、GPU 和 AI 性能,全方位支持了强大的终端侧生成式 AI 功能、始终感知的 ISP、超沉浸的移动游戏体验、突破性连接能力和无损高清音频。
机器之心
2024/03/19
1930
支持百亿参数大模型、卢伟冰现场官宣小米首发,高通骁龙8s Gen3发布
高通骁龙8+转投台积电!4nm制程整体功耗降15%,小米OPPO旗舰都安排上了
萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 终于,高通的最新芯片又回归台积电工艺了! 就在刚刚,高通在发布会上宣布了全新的移动平台第一代骁龙8+和第一代骁龙7,其中骁龙8+终于从三星4nm回归台积电4nm制程。 工艺一换,功耗立刻就不一样了。 虽然八核的配置并没有什么改变,但相比骁龙8,骁龙8+不仅在CPU和GPU功耗上分别降低了30%,CPU性能还提升了10%左右。 有意思的是,这次高通在发布会上,还主动公开了在骁龙8+上运行原神的功耗数据: 除此之外,高通这次也发布了一款三星4nm制程的骁
量子位
2022/05/23
3520
高通骁龙8+转投台积电!4nm制程整体功耗降15%,小米OPPO旗舰都安排上了
首发二代骁龙7+平台,Redmi Note 12 Turbo定价1999元起!传联发科天玑8000/9000系列迭代芯片被砍
3月28日,小米集团旗下子品牌Redmi召开春季新品发布会,正式发布了Redmi Note 12 Turbo,主打大内存+大存储(8+256起步),并首发高通第二代骁龙7+处理器,定价竟然低至1999元起,堪称“价格屠夫”。此外Redmi还宣布与华纳兄弟探索集团合作,带来了全球首款哈利·波特定制手机——Note 12 Turbo哈利·波特版。
芯智讯
2023/04/11
6660
首发二代骁龙7+平台,Redmi Note 12 Turbo定价1999元起!传联发科天玑8000/9000系列迭代芯片被砍
高通发布全新骁龙4 Gen 2 芯片:升级4nm工艺,CPU性能提升10%
近日,高通发布了新的入门级移动芯片组骁龙 4 Gen 2,从上一代的台积电6nm升级到了三星4nm工艺,为低端智能手机带来大幅升级。
芯智讯
2023/08/09
1.2K0
高通发布全新骁龙4 Gen 2 芯片:升级4nm工艺,CPU性能提升10%
你的4nm安卓旗舰芯片来了!骁龙8 Gen 1:支持8K HDR,功耗降30%,雷军:小米12首发
CPU方面继续采用“1+3+4”的设置,内置八核Kryo CPU包含1个Cortex-X2超大核、3个Cortex-A710大核和4个Cortex-A510小核。
量子位
2021/12/02
5060
你的4nm安卓旗舰芯片来了!骁龙8 Gen 1:支持8K HDR,功耗降30%,雷军:小米12首发
高通发布第二代骁龙7+处理器:Redmi Note 12 Turbo将首发
3月17日,高通公司正式发布了第二代骁龙7+ 移动平台,这也是高通迄今为止最强的骁龙7系芯片。
芯智讯
2023/03/24
8640
高通发布第二代骁龙7+处理器:Redmi Note 12 Turbo将首发
高通骁龙8 Gen2发布:CUP性能提升35%,GPU性能提升25%,AI性能提升4.35倍!
北京时间11月16日早间,高通在夏威夷举行了 2022 骁龙峰会,会上正式发布了其第二代骁龙8旗舰移动平台(骁龙8 Gen 2)。与第一代相比,骁龙8 Gen 2在CPU、GPU、AI、影像、音频、网络连接、游戏体验、可信安全等方面带来了全面的提升。
芯智讯
2022/11/22
1.2K0
高通骁龙8 Gen2发布:CUP性能提升35%,GPU性能提升25%,AI性能提升4.35倍!
基于定制的Oryon CPU内核,高通骁龙8cx Gen 4曝光
2月7日消息,据外媒Notebookcheck 报导,高通即将于2024年正式推出基于自研的定制CPU内核“Oryon”的骁龙处理器,届时将会被命名为骁龙8cx Gen 4,并将会采用台积电4nm制程工艺。
芯智讯
2023/02/09
4210
高通骁龙8 Gen 2现身Geekbench:小米13系列有望全球首发
日前高通公司正式宣布,将于11月16日-11月18日在三亚海棠湾举行2022骁龙技术峰会,届时万众期待的骁龙8 Gen 2旗舰平台将正式亮相。而结合此前相关爆料,不出意外的话,小米也将紧接着官宣全新的小米13系列将全球首发搭载该芯片,并且最早将在11月底就将推出该机型。现在有最新消息,近日该芯片的跑分已现身Geekbench跑分网站。
帝旭科技
2022/11/23
2920
高通骁龙8 Gen 2现身Geekbench:小米13系列有望全球首发
内有资料合辑 | 5G来了!如何看待高通发布的全新旗舰骁龙 855?
雷锋网消息,北京时间 12 月 5 日凌晨,高通一年一度的骁龙技术峰会在夏威夷举办,正式推出支持 5G 的全新 SoC 骁龙 855 移动平台。发布会上,高通花了大量时间阐述 5G 的到来将对行业带来深刻的改变,关于 855 的细节则要等到明天同一时间才会公布。
AI研习社
2018/12/24
4280
高通骁龙782G发布:CPU性能提升5%,GPU性能提升10%!荣耀10首发搭载
11月24日消息,继上周高通公司发布了全新的骁龙8 Gen2旗舰移动平台之后,近日,高通又推出了全新的骁龙7系列移动平台——骁龙782G,相比前代的骁龙778G+,骁龙782G 的CPU性能提高了5%,GPU性能提高了10%。
芯智讯
2022/12/09
1.3K0
高通骁龙782G发布:CPU性能提升5%,GPU性能提升10%!荣耀10首发搭载
天玑8000系列将于明日发布,性能超越骁龙888
活动火热报名中!欢迎扫码 天玑9000的产能问题,让联发科很头疼。 作者 | 来自镁客星球的家衡 今日,联发科在其官方微博宣布,将于明天正式发布天玑处理器系列新品。依据此前@数码闲聊站的爆料,这次联发科要发布的新品为天玑8000系列,包括天玑8100和天玑8000两款芯片。 从定位上来看,天玑8000系列为中端处理器,其中天玑8100性能更强,可以与市面上的次旗舰级别处理器媲美。从安兔兔的跑分可以看出,天玑8100综合成绩已经突破了82万分,超过了高通上一代骁龙888旗舰处理器,在天玑系列中仅次于天玑90
镁客网
2022/03/04
3890
高通推出骁龙778G 5G移动平台,荣耀50系列将搭载
昨日晚间,高通正式发布了新一代高端移动平台“骁龙778G”,号称在ISP影像、AI人工智能、GPU游戏方面拥有“三项全能”,可以带来极致的多媒体体验。
镁客网
2021/06/08
6140
高通4nm二代骁龙8发布,网友:网易赢了
就在刚刚发布的第二代骁龙8移动平台上,高通直接甩出一手基于硬件加速的实时光追技术。
量子位
2022/12/09
2990
高通4nm二代骁龙8发布,网友:网易赢了
高性能版骁龙8 Gen4测试成绩曝光,主频高达4.47GHz
9月25日消息,随着高通新一代旗舰移动芯片平台骁龙8 Gen 4的即将发布,近期三星也被曝光正在为新一代旗舰智能手机Galaxy S25 Ultra对骁龙8 Gen 4 进行了多次测试。而最新的爆料显示,拥有更高主频版本的骁龙8 Gen 4,其多线程得分获得了比上次更高的分数。
芯智讯
2024/09/27
2000
高性能版骁龙8 Gen4测试成绩曝光,主频高达4.47GHz
高通骁龙8 Gen 4 细节参数曝光:CPU及GPU性能均提升25%以上!
8月20日消息,随着高通新一代旗舰移动平台骁龙8 Gen 4的即将发布,该芯片的更多细节参数也开始被陆续曝光。
芯智讯
2024/08/21
2880
高通骁龙8 Gen 4 细节参数曝光:CPU及GPU性能均提升25%以上!
骁龙855/骁龙845实际功耗对比:大降20% ?
高通新一代旗舰移动平台骁龙855采用了7nm工艺制造,集成八颗Kryo CPU核心(一个Kryo 485超级内核+三个性能内核+三个效率内核)、Adreno 640 GPU图形核心、Hexagon 690 DSP数字信号处理器、Spectra 380 ISP图像信号处理器、骁龙X24 2Gbps高速基带等模块,专为AI增加了张量加速器并支持第四代AI引擎。
用户9732312
2022/05/13
1.4K0
骁龙855/骁龙845实际功耗对比:大降20% ?
推荐阅读
高通发布第三代骁龙7:GPU性能大涨50%,配备骁龙8系同款三ISP
8700
华为麒麟 970 发布,超越高通骁龙 835 了吗?
1.1K0
骁龙最强AI芯能力下放:小旗舰8s发布,端侧运行10B大模型,小米Civi首发
1770
支持百亿参数大模型、卢伟冰现场官宣小米首发,高通骁龙8s Gen3发布
1930
高通骁龙8+转投台积电!4nm制程整体功耗降15%,小米OPPO旗舰都安排上了
3520
首发二代骁龙7+平台,Redmi Note 12 Turbo定价1999元起!传联发科天玑8000/9000系列迭代芯片被砍
6660
高通发布全新骁龙4 Gen 2 芯片:升级4nm工艺,CPU性能提升10%
1.2K0
你的4nm安卓旗舰芯片来了!骁龙8 Gen 1:支持8K HDR,功耗降30%,雷军:小米12首发
5060
高通发布第二代骁龙7+处理器:Redmi Note 12 Turbo将首发
8640
高通骁龙8 Gen2发布:CUP性能提升35%,GPU性能提升25%,AI性能提升4.35倍!
1.2K0
基于定制的Oryon CPU内核,高通骁龙8cx Gen 4曝光
4210
高通骁龙8 Gen 2现身Geekbench:小米13系列有望全球首发
2920
内有资料合辑 | 5G来了!如何看待高通发布的全新旗舰骁龙 855?
4280
高通骁龙782G发布:CPU性能提升5%,GPU性能提升10%!荣耀10首发搭载
1.3K0
天玑8000系列将于明日发布,性能超越骁龙888
3890
高通推出骁龙778G 5G移动平台,荣耀50系列将搭载
6140
高通4nm二代骁龙8发布,网友:网易赢了
2990
高性能版骁龙8 Gen4测试成绩曝光,主频高达4.47GHz
2000
高通骁龙8 Gen 4 细节参数曝光:CPU及GPU性能均提升25%以上!
2880
骁龙855/骁龙845实际功耗对比:大降20% ?
1.4K0
相关推荐
高通发布第三代骁龙7:GPU性能大涨50%,配备骁龙8系同款三ISP
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验