• golang数据结构之栈


    stack.go

    package stack
    
    import (
        "errors"
        "fmt"
    )
    
    type Stack struct {
        MaxTop int    //栈最大可以存放的数量
        Top    int    //栈顶
        arr    [5]int //模拟栈
    }
    
    func (s *Stack) Push(val int) (err error) {
        //先判断栈是否满了
        if s.Top == s.MaxTop-1 {
            fmt.Println("栈满了")
            return errors.New("栈满了")
        }
        s.Top++
        s.arr[s.Top] = val
        return
    }
    
    func (s *Stack) Pop() (val int, err error) {
        if s.Top == -1 {
            fmt.Println("栈已空")
            return -1, errors.New("栈已空")
        }
        val = s.arr[s.Top]
        s.arr[s.Top] = 0
        s.Top--
        return val, nil
    
    }
    
    func (s *Stack) Show() {
        if s.Top == -1 {
            fmt.Println("栈为空")
            return
        }
        tmp := s
        for i := tmp.Top; i >= 0; i-- {
            fmt.Printf("arr[%d]=%v
    ", i, tmp.arr[i])
        }
        return
    }

    main.gp

    package main
    
    import (
        "fmt"
        "go_code/data_structure/stack"
    )
    
    func main() {
    
        s := &stack.Stack{
            MaxTop: 5,
            Top:    -1, // 当栈顶为-1时,表示栈顶为空
        }
        s.Push(1)
        s.Push(2)
        s.Push(3)
        s.Push(4)
        s.Push(5)
        for i := 0; i < 3; i++ {
            val, err := s.Pop()
            if err != nil {
                fmt.Println("出栈错误err=", err)
                return
            }
            fmt.Println("出栈的值是:", val)
        }
        s.Push(6)
        s.Show()
    }

    运行结果:

    首先是1,2,3,4,5依次进栈,然后5,4,3出栈,6再进栈。 

  • 相关阅读:
    Git学习
    flask学习5 错误页面
    flask学习4-会话
    flask学习3
    线性代数复习
    flask学习2
    flask学习1
    windows下安装easy_install,pip,及flask入门教程链接
    MacOS Terminal调用Python代码
    [java] 类变量初始化顺序
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12022464.html
Copyright © 2020-2023  润新知