golang数据结构和算法之StackArray数组堆栈
用数组实现的堆栈,
另一种,是用链表实现的堆栈,
在各种不同的编程语言上,
实现都是类似的。
StackArray.go
package StackArray
//基于数组实现的堆栈
const arraySize = 10
type Stack struct {
top int
data [arraySize]int
}
func (s *Stack) Push(i int) bool {
if s.top == len(s.data) {
return false
}
s.data[s.top] = i
s.top += 1
return true
}
func (s *Stack) Pop() (int, bool) {
if s.top == 0 {
return 0, false
}
i := s.data[s.top-1]
s.top -= 1
return i, true
}
func (s *Stack) Peek() int {
return s.data[s.top-1]
}
func (s *Stack) get() []int {
return s.data[:s.top]
}
func (s *Stack) IsEmpty() bool {
return s.top == 0
}
func (s *Stack) Empty() {
s.top = 0
}
StackArray_test.go
package StackArray
import (
"fmt"
"math/rand"
"testing"
"time"
)
func TestStackArray(t *testing.T) {
//array := [...]int{0,0,0,0,0,0,0,0,0,0}
var array [arraySize]int
stackArray := &Stack{
top: 0,
data: array,
}
fmt.Println(stackArray.top, stackArray.data)
random := rand.New(rand.NewSource(time.Now().UnixNano()))
randNumber := random.Intn(100)
stackArray.Push(randNumber)
stackArray.Push(random.Intn(100))
stackArray.Push(random.Intn(100))
stackArray.Push(random.Intn(100))
fmt.Println(stackArray.top, stackArray.data)
retResult, retBool := stackArray.Pop()
if retBool == true {
fmt.Println(retResult)
}
stackArray.Empty()
if stackArray.IsEmpty() == false {
t.Fail()
}
}
输出:
D:/Go/bin/go.exe test -v [D:/go-project/src/StackArray] === RUN TestStackArray 0 [0 0 0 0 0 0 0 0 0 0] 4 [26 2 96 90 0 0 0 0 0 0] 90 --- PASS: TestStackArray (0.00s) PASS ok StackArray 2.043s 成功: 进程退出代码 0.
golang数据结构和算法之StackArray数组堆栈的更多相关文章
- golang数据结构和算法之StackLinkedList链表堆栈
会了上一个,这个就差不离了. StackLinkedList.go package StackLinkedList type Node struct { data int next *Node } t ...
- java数据结构和算法01(数组的简单使用)
一直都对这一块没有什么想法,加上不怎么理解,只是懂个大概:最近突然感觉对数据结构和算法这块有点儿兴趣,决定还是尽量详细的看看这些结构和算法: 话说什么事数据结构和算法呢?现在我也说不上来,等我学的差不 ...
- JS数据结构及算法(一) 堆栈
最近在看<学习JavaScript数据结构与算法>这本书,感觉自己又涨知识了 哈哈... 现在将自己看的做个总结,也是巩固理解. 栈:先进后出,新添加和待删除的元素都保存在栈顶.可以用数组 ...
- golang数据结构和算法之BinarySearch二分查找法
基础语法差不多了, 就需要系统的撸一下数据结构和算法了. 没找到合适的书, 就参考github项目: https://github.com/floyernick/Data-Structures-and ...
- Java成神之路:第二帖---- 数据结构与算法之稀疏数组
数据结构与算法--稀疏数组 转换方法 记录数组有几行几列,有多少个不同的值 把不同的值的元素的行列,记录在一个小规模的数组中,以此来缩小数组的规模 如图: 二维数组转稀疏数组 对原始的二维数组进行遍历 ...
- java版数据结构与算法第二章数组
数组由一组具有相同类型的数据元素组成,并存储在一组连续存储单元中.一维数组是常量. 二维数组:若一维数组中的数据元素又是一堆数据结构,我们称之为二维数组.二维数组可以看成是n个列向量组成的线性表. 数 ...
- javascript数据结构和算法 第二章 (数组) 二
字符串表示的数组 join() 和 toString() 函数返回数组的字符串表示.这两个函数通过将数组中的元素用逗号分隔符切割,返回字符串数组表示. 这里有个样例: var names = [&qu ...
- Android版数据结构与算法(二):基于数组的实现ArrayList源码彻底分析
版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 本片我们分析基础数组的实现--ArrayList,不会分析整个集合的继承体系,这不是本系列文章重点. 源码分析都是基于"安卓版" ...
- 数据结构与算法之有序数组(2)——in dart
本文比第一篇,采用了类实现.增加了运算符重载等功能.本来有序数组是不能修改某个位置的值的,因为这样会打破数组的有序性:但为了演示,保留了修改的方法,但为此增加了排序. import 'dart:mat ...
随机推荐
- Android项目模块化/组件化开发(非原创)
文章大纲 一.项目模块化初步介绍二.项目模块化的两种模式与比较三.大型项目模块化的演进四.项目模块化总结五.参考文章 一.项目模块化初步介绍 1. 前言 在Android开发中,随着项目的不断扩展 ...
- DataPump遭遇ORA-06512&ORA-39080&ORA-01403错误案例
最近使用数据泵(DataPump)比较多,遇到了奇奇怪怪的问题,似乎Apply了补丁PSU 10.2.0.5.180717后,DataPump的问题就格外多.如下所示: expdp system/xx ...
- FormData的介绍(一)
FormData对象介绍FormData字母意思是表单数据,H5新增的一个内置对象.可以获取任何类型的表单数据,如text radio checkbox file textarea 常用语发送ajax ...
- new String(request.getParameter("userID").trim().getBytes("8859_1"))的含义是什么?
new String(request.getParameter("userID").trim().getBytes("8859_1")) request.get ...
- 【西北师大-2108Java】第九次作业成绩汇总
[西北师大-2108Java]第九次作业成绩汇总 作业题目 面向对象程序设计(JAVA) 第11周学习指导及要求 实验目的与要求 (1)理解泛型概念: (2)掌握泛型类的定义与使用: (3)掌握泛型方 ...
- 2019-2020-1 20199305《Linux内核原理与分析》第六周作业
系统调用的三层机制(下) (一)给MenuOS增加命令 (1)打开虚拟机,首先用rm -rf menu指令删除当前的menu目录,然后用git clone重新克隆一个新版本的menu,进入menu,运 ...
- WPF 精修篇 DataGrid 筛选
原文:WPF 精修篇 DataGrid 筛选 DataGrid也可以分组 但是用的地方不多 就没写 筛选还是可以的 比如Datagrid数据量比较大 要做数据筛选 贴码 <DataGrid x: ...
- [学习笔记] Manacher与PAM
\(1\) Manacher 挺短,背是挺好背的 Manacher用于求回文串长度.思想大概就是: 1.加入字符集之外的识别字符(比如#)分隔开原来相邻的字母,这样所有的回文串都变成了以某个字符为中心 ...
- hashlib和hmac模块
目录 一.hashlib模块 1.0.1 hash是什么 1.0.2 撞库破解hash算法加密 一.hashlib模块 1.0.1 hash是什么 hash是一种算法(Python3.版本里使用has ...
- python-12-字典的嵌套与int快速排序
前言 字典的增删改查我们都有一定的认识与了解啦,但是字典也可以嵌套列表.字典.元组等数据结构. 一.字典的嵌套 1.修改.添加 dic = { "name": ["lin ...