golang数据结构之栈
时间:2022-07-23
本文章向大家介绍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]=%vn", 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再进栈。
- Mapreduce程序中reduce的Iterable参数迭代出是同一个对象
- 内部威胁那些事儿(二):系统破坏
- 从用户行为去理解内容-item2vec及其应用
- Dubbo与Zookeeper、SpringMVC整合和使用(入门级)
- Websocket HandShake Sec-WebSocket-Accept 生成策略
- 关于JVM CPU资源占用过高的问题排查
- ActiveMQ简单介绍以及安装
- Java Process destroy方法kill进程,返回码测试
- 百度人脸识别API Java调用
- Java Socket Timeout总结
- 求一个数组中子数组的最大和算法(Java实现)
- JDBC批量提交SQL的几点问题解答
- 工具推荐: 汽车CAN总线分析框架CANToolz
- Windows下jps, jconsole无法查看本地java进程问题解决
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- AtCoder Beginner Contest 164---D
- 问题 1511: [蓝桥杯][算法提高VIP]复数求和
- 计算机网络--概论
- 因式分解(计蒜网)
- 区间合并(计蒜网)
- AtCoder Beginner Contest 161 A~~F
- 试题 算法训练 猴子吃包子
- 蓝桥杯 试题 基础练习 字符串对比
- 蓝桥杯 试题 基础练习 矩阵乘法
- 蓝桥杯 试题 基础练习 矩形面积交
- 蓝桥杯 试题 基础练习 完美的代价(详细c++)
- 牛客小白月赛23 部分题解
- AtCoder Beginner Contest 159 A~~D
- 最大连续子序列和(最大子数组和)四种最详细的解法
- 玩转 Linux 环境下日期的语法