加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang数据结构之队列

发布时间:2020-12-16 09:17:58 所属栏目:大数据 来源:网络整理
导读:队列可以用数组或链表实现,遵从先入先出。 目录结构: 在main中调用queue包中的属性和方法,如何调用参考另一篇文章:?https://www.cnblogs.com/xiximayou/p/12005480.html 一个队列需要有四要素: 容量、队首指针、队尾指针、存储数据的数组 ; 当队尾指针

队列可以用数组或链表实现,遵从先入先出。

目录结构:

在main中调用queue包中的属性和方法,如何调用参考另一篇文章:?https://www.cnblogs.com/xiximayou/p/12005480.html

一个队列需要有四要素:容量、队首指针、队尾指针、存储数据的数组

当队尾指针==容量-1时,此时队列已满,就不能再有数据进队;

当队首指针==队尾指针时,此时队列已空,就不能再从队列中取出数据;

同时可以发现,这种队列只能使用一次,因为那时队首和队尾都指向队尾了。

代码如下:

queue.go

package queue

import (
    "errors"
    fmt"
)

//Queue 使用结构体管理队列
type Queue struct {
    MaxSize int
    Array   [4]int 模拟队列
    Front   int    队列首位
    Rear    队列尾部
}

AddQueue 向队列中添加一个值
func (q *Queue) AddQueue(val ) (err error) {
    q.MaxSize = 4
    先判断队列是否已满
    if q.Rear == q.MaxSize-1 {
        return errors.New(队列已满)
    }
    q.Rear++
    q.Array[q.Rear] = val
    return
}

GetQueue 得到一个值
func (q *Queue) GetQueue() (val ,err error) {
    if q.Front == q.Rear {
        return -1,errors.New(队列已空)
    }
    q.Front++
    val = q.Array[q.Front]
     val,err
}

ShowQueue 显示队列
func (q *Queue) ShowQueue() {
    for i := q.Front + 1; i <= q.Rear; i++ {
        fmt.Printf(queue[%d]=%vt
package main

import (
    go_code/data_structure/queueos
)

func main() {
    var key string
    var val 
    q := &queue.Queue{
        MaxSize: 4-for {
        fmt.Println(------------------------------)
        fmt.Println(1.输入add表示添加数据到队列2.输入get表示从队列中获取数据3.输入show表示显示队列4.输入exit表示退出)
        fmt.Scanln(&key)
        switch key {
        case add:
            fmt.Println(请输入要添加的值:)
            fmt.Scanln(&val)
            err := q.AddQueue(val)
            if err != nil {
                fmt.Println(err)
            } else {
                fmt.Println(添加成功)
                fmt.Println(Rear:get:
            val,err := q.GetQueue()
            得到的值为:"Frontshow:
            q.ShowQueue()
            fmt.Println()
        exit:
            os.Exit(0)
        }
    }
}

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读