golang数据结构之栈
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再进栈。
golang数据结构之栈的更多相关文章
- 学习javascript数据结构(一)——栈和队列
前言 只要你不计较得失,人生还有什么不能想法子克服的. 原文地址:学习javascript数据结构(一)--栈和队列 博主博客地址:Damonare的个人博客 几乎所有的编程语言都原生支持数组类型,因 ...
- 基础数据结构 之 栈(python实现)
栈是编程开发中的两种较为简单的数据结构.栈和队可用于模拟函数的递归.栈的特点是后进先出.其常用操作包括:出栈,入栈等.在出栈前,需判断栈是否为空.在入栈时,需判断栈是否已满. 下面给出一个用pytho ...
- PHP数据结构:栈、队列、堆、固定数组
数据结构:栈 队列: 堆: 固定尺寸的数组:
- python数据结构之栈与队列
python数据结构之栈与队列 用list实现堆栈stack 堆栈:后进先出 如何进?用append 如何出?用pop() >>> >>> stack = [3, ...
- 不使用数据结构反转栈 递归 CVTE实习 CVTE是一家什么公司
本文因为垃圾csdn标题字限制,标题写不好.本文想说一个算法,和我在CVTE的实习,我看到CVTE是一家什么公司.如果想要喷我的,可以留言,我不会理.如果想喷公司,可以在博客评论或发到我邮件linde ...
- Python数据结构之栈的实现
一图胜千言,看图! 代码code: #coding:utf-8 #常见数据结构之栈的实现 class Stack(): #创建Stack类 def __init__(st,size): st.stac ...
- 数据结构之 栈 (Python 版)
数据结构之 栈 (Python 版) -- 利用线性表实现栈 栈的特性: 后进先出 基于顺序表实现栈 class SStack(): ''' 基于顺序表 实现的 栈类 ''' def __init__ ...
- hdu 1022:Train Problem I(数据结构,栈,递归,dfs)
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- 数据结构(栈&堆 )
在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构.堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除.在单片机应用中,堆栈是个特殊的存储区,主要功能 ...
随机推荐
- Centos8_本地Yum源配置
一.先将iso镜像文件挂载 mount /dev/cdrom /mnt 将cdrom挂载到/mnt下 二.编辑挂载文件 cp -a /mnt/media.repo /etc/yum.repos.d/ ...
- HTML和css常见问题解答2
1.将一个块级元素水平和垂直居中有几种方法?分别是什么? 四种方式: (1).要让div等块级元素水平和垂直居中,必需知道该div等块级元素的宽度和高度,然后设置位置为绝对位置,距离页面窗口左边框和上 ...
- JS调用MD5加密
为了系统的安全,前端一般需要对密码进行MD5加密,然后传输给后台处理.MD5的英文是Message Digest Algorithm(信息摘要算法),是不可逆的算法,只能通过暴力破解,所以较为安全. ...
- JS-时间相关的函数封装
1.用JS把时间戳转换为时间,代码如下: //时间戳转换为时间 function timestampToTime(timestamp) { var date = new Date(timestamp) ...
- docker 部署springcloud项目
一.首先从 docker.hub[地址:https://hub.docker.com] 中根据各自的需求 pull 对应的 openjdk镜像(本次直接在修改后的docker镜像源中下载) docke ...
- C# - VS2019 DataGridView导出到Excel的三种方法
//原文出处:http://www.yongfa365.com/Item/DataGridViewToExcel.html 1 #region DataGridView数据显示到Excel /// & ...
- Geohash精度和原理
转自:https://blog.csdn.net/u011497262/article/details/81210634 https://www.jianshu.com/p/1ecf03293b9a ...
- word-break、word-wrap、white-space区别
<div id="box"> Hi , This is a incomprehensibilities long word. </br> 你好 , 这 ...
- 在标准实体特殊消息上注册插件及Dynamics CRM 2015中计算字段的使用
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复157或者20151005可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 前面的 插件系列博客教程 讲述了 ...
- python中字典
字典中key:不可改变的数据类型 #fromkeys 快速定义一个空字典 res = {}.fromkeys([']) print(res) 定义字典: dict1 = { 'name1':'天明', ...