golang数据结构之栈
2024-09-01 20:07:04
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再进栈。
最新文章
- js九九乘法表
- SrcollView分页加载数据(第二种方法 自定义listView)
- python用装饰器实现缓存函数执行结果
- 20140213-想念是while里的死循环
- Windows2012中Jenkins搭建.NET自动编译测试与发布环境
- Walls POJ 1161
- ArcGIS加载高德、OSM和谷歌等地图
- JavaScript之面向对象学习一
- Flexigrid去掉列选择
- 备忘录模式(Memento)
- 轨迹系列——Socket总结及实现基于TCP或UDP的809协议方法
- RPC原理解析
- 如何用webgl(three.js)搭建一个3D库房-第二课
- mysql查询表是否存在
- js小结
- spring boot 返回json字符串 null值转空字符串
- 运用kmp算法解决的一些问题的简单题解
- ansible 配置了端口在host文件但是还要走22 ip:60001 ansible_ssh_port=60001
- Centos7 nginx安装过程
- ViewPager滑动不畅及灵敏度的问题
热门文章
- SAP GUI Security notice
- RSA加解密&;RSA加验签详解
- 05-Node.js学习笔记-第三方模块
- 20182320《Program Design and Data Structures》Learning Summary Week9
- [洛谷P1373][题解]小a和uim之大逃离
- CountDownLatch(倒计时计数器)使用说明 --并发
- 原生js放大镜效果
- 原子类解决i++问题
- react 项目引入路由
- netty源码解析(4.0)-27 ByteBuf内存池:PoolArena-PoolThreadCache