stack.go

package stack

import (
"errors"
"fmt"
) type Stack struct {
MaxTop int //栈最大可以存放的数量
Top int //栈顶
arr []int //模拟栈
} func (s *Stack) Push(val int) (err error) {
//先判断栈是否满了
if s.Top == s.MaxTop- {
fmt.Println("栈满了")
return errors.New("栈满了")
}
s.Top++
s.arr[s.Top] = val
return
} func (s *Stack) Pop() (val int, err error) {
if s.Top == - {
fmt.Println("栈已空")
return -, errors.New("栈已空")
}
val = s.arr[s.Top]
s.arr[s.Top] =
s.Top--
return val, nil } func (s *Stack) Show() {
if s.Top == - {
fmt.Println("栈为空")
return
}
tmp := s
for i := tmp.Top; i >= ; 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: ,
Top: -, // 当栈顶为-1时,表示栈顶为空
}
s.Push()
s.Push()
s.Push()
s.Push()
s.Push()
for i := ; i < ; i++ {
val, err := s.Pop()
if err != nil {
fmt.Println("出栈错误err=", err)
return
}
fmt.Println("出栈的值是:", val)
}
s.Push()
s.Show()
}

运行结果:

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

最新文章

  1. js九九乘法表
  2. SrcollView分页加载数据(第二种方法 自定义listView)
  3. python用装饰器实现缓存函数执行结果
  4. 20140213-想念是while里的死循环
  5. Windows2012中Jenkins搭建.NET自动编译测试与发布环境
  6. Walls POJ 1161
  7. ArcGIS加载高德、OSM和谷歌等地图
  8. JavaScript之面向对象学习一
  9. Flexigrid去掉列选择
  10. 备忘录模式(Memento)
  11. 轨迹系列——Socket总结及实现基于TCP或UDP的809协议方法
  12. RPC原理解析
  13. 如何用webgl(three.js)搭建一个3D库房-第二课
  14. mysql查询表是否存在
  15. js小结
  16. spring boot 返回json字符串 null值转空字符串
  17. 运用kmp算法解决的一些问题的简单题解
  18. ansible 配置了端口在host文件但是还要走22 ip:60001 ansible_ssh_port=60001
  19. Centos7 nginx安装过程
  20. ViewPager滑动不畅及灵敏度的问题

热门文章

  1. SAP GUI Security notice
  2. RSA加解密&amp;RSA加验签详解
  3. 05-Node.js学习笔记-第三方模块
  4. 20182320《Program Design and Data Structures》Learning Summary Week9
  5. [洛谷P1373][题解]小a和uim之大逃离
  6. CountDownLatch(倒计时计数器)使用说明 --并发
  7. 原生js放大镜效果
  8. 原子类解决i++问题
  9. react 项目引入路由
  10. netty源码解析(4.0)-27 ByteBuf内存池:PoolArena-PoolThreadCache