golang数据结构之环形队列

golang数据结构之环形队列,第1张

概述目录结构: circlequeue.go package queue import ( "errors" "fmt" ) //CircleQueue 环型队列

目录结构:

circlequeue.go

package queueimport (    "errors"    fmt")//CircleQueue 环型队列type CircleQueue struct {    MaxSize int    Array   [5]    Front       Rear    }Push 向队列中添加一个值func (q *CircleQueue) Push(val ) (err error) {    先判断队列是否已满    if q.IsFull() {        return errors.New(队列已满)    }    q.Array[q.Rear] = val    队尾不包含元素    q.Rear++    q.Rear = (q.Rear + 1) % q.MaxSize    returnPop 得到一个值func (q *CircleQueue) Pop() (val ,err error) {     q.IsEmpty() {        return -1,errors.New(队列已空)    }    队首包含元素    val = q.Array[q.Front]    q.Front++    q.Front = (q.Front + 1) % q.MaxSize     val,err}IsFull 队列是否满了func (q *CircleQueue) IsFull() bool {    return (q.Rear+1)%q.MaxSize == q.Front}IsEmpty 队列是否为空func (q *CircleQueue) IsEmpty() q.Front == q.Rear}Size 队列的大小func (q *CircleQueue) Size() (q.Rear + q.MaxSize - q.Front) % q.MaxSize}Show 显示队列func (q *CircleQueue) Show() {    取出当前队列有多少元素    size := q.Size()    if size == 0 {        fmt.Println(队列为空辅助变量,指向Front    tmpFront := q.Front    for i := 0; i < size; i++ {        fmt.Printf(queue[%d]=%v\ttmpFront = (tmpFront + 1) % q.MaxSize    }}

main.go

package mainimport (    go_code/data_structure/queueos)func main() {    var key string    var val     q := &queue.CircleQueue{        MaxSize: 5for------------------------------)        fmt.Println(1.输入push表示添加数据到队列2.输入pop表示从队列中获取数据3.输入show表示显示队列4.输入exit表示退出)        fmt.Scanln(&key)        switch key {        case push:            fmt.Println(请输入要添加的值:)            fmt.Scanln(&val)            err := q.Push(val)            if err != nil {                fmt.Println(err)            } else {                fmt.Println(添加成功)                fmt.Println(Rear:pop:            val,err := q.Pop()            得到的值为:Front:show:            q.Show()            fmt.Println()        exit:            os.Exit()        }    }}

注意标红的地方,这是循环队列的核心。

总结

以上是内存溢出为你收集整理的golang数据结构环形队列全部内容,希望文章能够帮你解决golang数据结构之环形队列所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1262229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存