美文网首页
36.Go语言·数据结构·数组模拟队列

36.Go语言·数据结构·数组模拟队列

作者: 一枼落知天下 | 来源:发表于2019-06-18 20:16 被阅读0次

    main.go

    // Go语言·数据结构
    package main
    
    import (
        "errors"
        "fmt"
        "os"
    )
    
    var content string = `
    ————————————————Go语言·数据结构————————————————————
    一、队列
        1.队列是一个有序列表,可以用数组或链表来实现
        2.遵循先入先出的原则:先存入队列的数据,要先取出,后存入的要后取出
    
    二、使用数组模拟队列
    
    
    `
    
    type Queue struct {
        maxSize int
        array   [5]int //数组模拟队列
        front   int    //对首
        rear    int    //队尾
    }
    
    // 添加数据到队列
    func (this *Queue) AddQueue(val int) (err error) {
        //判断队列是否已满
        if this.rear == this.maxSize-1 {
            return errors.New("队列已满!")
        }
    
        this.rear++
    
        this.array[this.rear] = val
        return
    }
    
    // 显示队列,从对首到队尾
    func (this *Queue) ShowQueue() {
        // 对首到队尾的数据
        for i := this.front + 1; i <= this.rear; i++ {
            fmt.Printf("this.array[%d]=%v \n ", i, this.array[i])
        }
    }
    
    // 从队列中取数据
    func (this *Queue) GetQueue() (val int,err error) {
        //判断队列是否已满
        if this.front == this.rear {
            return val,errors.New("队列已空!")
        }
    
        this.front++
    
         val = this.array[this.front]
        return 
    }
    
    
    func main() {
        queue := &Queue{
            maxSize: 5,
            front:   -1,
            rear:    -1,
        }
    
        var key int
        var val int
    
        for {
            fmt.Println("1.添加队列")
            fmt.Println("2.取出队列")
            fmt.Println("3.显示队列")
            fmt.Println("4.退出")
            fmt.Scanln(&key)
            switch key {
                case 1:
                    fmt.Print("请输入一个数>>>")  
                    fmt.Scanln(&val)
                    err := queue.AddQueue(val)
                    if err != nil {
                        fmt.Println("添加队列失败")
                    }else{
                        fmt.Println("添加队列成功")
                    }
                case 2:
                     val,err := queue.GetQueue()
                     if err != nil {
                        fmt.Println(err) 
                     }
                     fmt.Println("从队列中取到的是:",val)
                case 3:
                    queue.ShowQueue()
                case 4:
                    os.Exit(0)
            }
        }
    }
    
    

    相关文章

      网友评论

          本文标题:36.Go语言·数据结构·数组模拟队列

          本文链接:https://www.haomeiwen.com/subject/wmvqqctx.html