真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

golang使用數(shù)組模擬環(huán)形隊(duì)列(demo)

//定義環(huán)形隊(duì)列結(jié)構(gòu)體
typeLoopQueue struct{
? MaxSize int
?array [5]int
?front int
?rear int
?over bool ?//標(biāo)識(shí)隊(duì)列是否溢出
}

//定義環(huán)形隊(duì)列的添加數(shù)據(jù)方法
func(loop*LoopQueue) Add(val int) {
? //環(huán)形隊(duì)列如果隊(duì)列滿了會(huì)覆蓋前面先進(jìn)來的位置元素
?ifloop.rear == loop.MaxSize -1 ?{
? ? ?//重置隊(duì)尾的指針指向,從頭重新開始隊(duì)列的邏輯
? ? ?//這里如果用取模的話,還沒實(shí)現(xiàn)
? ? ?loop.rear = -1
? ? ?//這個(gè)是為了退出條件,當(dāng)loop.rear == loop.front
? ? ?loop.front = loop.rear + 1
? ? ?//隊(duì)列是否溢出覆蓋
? ? ?loop.over = true
?}
? loop.rear++
? //如果溢出了則會(huì)覆蓋隊(duì)列前面先進(jìn)來的數(shù)據(jù),
? //但是這些數(shù)據(jù)是后面進(jìn)來的,要遵循FIFO原則,
? //則隊(duì)列首部指針往后面移動(dòng)
?ifloop.over {
? ? ?loop.front++
? }
? loop.array[loop.rear] = val
}


//定義環(huán)形隊(duì)列的數(shù)據(jù)查看方法
func(loop*LoopQueue) Show()(err error) ?{
? fori := loop.front + 1;i < loop.rear;i++ {
? ? ?fmt.Println("show:",loop.array[i])
? }
? returnerr
}

//定義取出環(huán)形隊(duì)列的數(shù)據(jù)方法
func(loop*LoopQueue) Get()(val int,err error) {
? //這里判斷隊(duì)列為空要分兩種情況
?// 1.正常隊(duì)列情況,數(shù)據(jù)沒有溢出覆蓋,即隊(duì)列首部在前,隊(duì)列尾部在后,此時(shí)loop.front < loop.rear
? // 2.隊(duì)列溢出了.數(shù)據(jù)把以前隊(duì)列前面的數(shù)據(jù)覆蓋了,此時(shí)loop.front > loop.rear
?ifloop.front == loop.rear {
? ? ?return-1,errors.New("queue is empty111")
? }
? //這個(gè)表示隊(duì)列前面有些數(shù)據(jù)已經(jīng)溢出被覆蓋了
?ifloop.rear < loop.front {
? ? ?ifloop.front == loop.MaxSize -1{
? ? ? ? val = loop.array[loop.front]
? ? ? ? //當(dāng)front讀取隊(duì)列后邊尾部時(shí),此時(shí)由于隊(duì)列是溢出的,隊(duì)列前面還有
? ? ? ?//此時(shí)則重置front為初始值,從頭在開始邏輯
? ? ? ?loop.front = -1
? ? ? ?returnval,err
? ? ?}
? ? ?val = loop.array[loop.front]
? ? ?loop.front++
? ? ?returnval,err
? }
? ifloop.front < loop.rear {
? ? ?ifloop.rear == loop.front {
? ? ? ? return-1,errors.New("queue is empty~")
? ? ?}
? ? ?loop.front++
? ? ?val = loop.array[loop.front]
? ? ?returnval,err
? }
? return
}

本文題目:golang使用數(shù)組模擬環(huán)形隊(duì)列(demo)
本文URL:http://weahome.cn/article/pdpcpj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部