首页 > 其他 > 详细

golang数据结构之栈

时间:2019-12-11 16:03:41      阅读:93      评论:0      收藏:0      [点我收藏+]

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\n", 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再进栈。 

golang数据结构之栈

原文:https://www.cnblogs.com/xiximayou/p/12022464.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!