stack.go
package stack import ( "errors" fmt" ) type Stack struct { MaxTop int //栈最大可以存放的数量 Top 栈顶 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 ,err error) { if s.Top == -栈已空return -1,errors.New() } val = s.arr[s.Top] s.arr[s.Top] = 0 s.Top-- val,nil } func (s *Stack) Show() { 栈为空 } tmp := s for i := tmp.Top; i >= 0; i-- { fmt.Printf(arr[%d]=%v\n }
main.gp
package main import ( go_code/data_structure/stack ) func main() { s := &stack.Stack{ MaxTop: 5 当栈顶为-1时,表示栈顶为空 } s.Push() s.Push(234) for i := 0; i < 3; i++ { val,err := s.Pop() if err != nil { fmt.Println(出栈错误err= } fmt.Println(出栈的值是:6) s.Show()
}
运行结果:
首先是1,2,3,4,5依次进栈,然后5,3出栈,6再进栈。