Go数据结构之Stack

Stack


一个简单确很有用的数据结构:FILO


package Stack
import (
"errors"
"fmt"
)

const (
defaultLength=100
)

type Stack struct{
top int
size int
element []interface {}
}
/**
根据给定的大小初始话stack
*/
func NewStackBySize(size int) *Stack{
return &Stack{size,size,make([]interface {},size)}
}
/**
根据默认的大小初始话stack
*/
func NewStack() *Stack{
return NewStackBySize(defaultLength)
}
/**
判断stack是否为空
*/
func (stack *Stack)IsEmpty() bool{
return stack.top==stack.size-1
}
/**
判断stack是否已经满了
*/
func (stack *Stack)IsFull() bool{
return stack.top == 0
}
/**
清空stack
*/
func (stack * Stack)Clear(){
stack.top=stack.size
}
/**
弹出一个元素
*/
func (stack *Stack)Pop() (interface {},error){
if stack.IsEmpty()==true{
return nil, errors.New("The Stack is empty")
}
stack.top=stack.top+1
return stack.element[stack.top-1], nil
}
/**
压入一个元素
*/
func (stack *Stack)Push(e interface {}) error{
if stack.IsFull()==true{
return errors.New("The Stack is full")
}
stack.top=stack.top-1
stack.element[stack.top]=e
return nil
}
func (stack *Stack)PrintStack(){
i:=stack.top
for{
if i==stack.size{
break
}
fmt.Print(stack.element[i],"\n")
i=i+1
}
}

Go数据结构之Stack,布布扣,bubuko.com

时间: 2024-08-06 19:27:07

Go数据结构之Stack的相关文章

Java数据结构漫谈-Stack

Stack(栈)是一种比较典型的数据结构,其元素满足后进先出(LIFO)的特点. Java中Stack的实现继承自Vector,所以其天然的具有了一些Vector的特点,所以栈也是线程安全的. class Stack<E> extends Vector<E> { 事实上,除了继承自Vector的那些方法之外,Stack只提供了5个方法: public E push(E item) { addElement(item); return item; } public synchroni

C# 数据结构 栈 Stack

栈和队列是非常重要的两种数据结构,栈和队列也是线性结构,线性表.栈和队列这三种数据结构的数据元素和元素的逻辑关系也相同 差别在于:线性表的操作不受限制,栈和队列操作受限制(遵循一定的原则),因此栈和队列也称为受限制的线性表. 栈的定义:操作在表的尾端进行的线性表,栈顶:TOP,栈底:Bottom.栈中没有数据:空栈Empty Stack 表示方法:S=(a1,a2,a3,a4……..an)a1为栈底的元素,an为栈顶的元素.这N个数据按照先后顺序插入到栈内,找出栈内数据则相反 遵循的原则(Las

数据结构:Stack

Stack设计与实现 Stack基本概念 栈是一种 特殊的线性表 栈仅能在线性表的一端进行操作 栈顶(Top):允许操作的一端 栈底(Bottom):不允许操作的一端 Stack的常用操作 创建栈 销毁栈 清空栈 进栈 出栈 获取栈顶元素 获取栈的大小 C语言描述=====>栈的设计与实现 人生财富库积累 #ifndef _MY_STACK_H_ #define _MY_STACK_H_ typedef void Stack; Stack* Stack_Create(); void Stack_

数据结构——Java Stack 类

定义 栈是Vector的一个子类,它实现了一个标准的后进先出的栈.堆栈只定义了默认构造函数,用来创建一个空栈. 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法. 图例 在下面图片中可以看到进栈(push)和出栈(pop)的过程.简单来说,栈只有一个入口(出口),所以先进后出(后进先出)就不难理解. 常用方法 序号 方法名 描述 1 Object push() 把项压入堆栈顶部 2 Object pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象 3 Object pee

T4308 数据结构判断

https://www.luogu.org/record/show?rid=2143639 题目描述 在世界的东边,有三瓶雪碧. ——laekov 黎大爷为了虐 zhx,给 zhx 出了这样一道题.黎大爷搞了一个数据结构,但 是他没有告诉 zhx 这到底是什么数据结构,我们只知道这是一个数据结构.为了 让 zhx 知道这是什么数据结构,黎大爷制造了很多次的输入和输出操作.每次加 入操作,黎大爷会告诉你他向这个数据结构加入了一个数并告诉你这是多少:每 次取出操作,黎大爷会从数据结构之中取出一个数并

SPL标准库常用的数据结构

栈数据结构 1 $stack = new SplStack(); //栈数据结构->先进后出 2 $stack->push('data1'); //入栈 3 $stack->push('data2'); //入栈 4 echo $stack->pop(); //出栈->data2 5 echo $stack->pop(); //出栈->data1 队列数据结构 1 $queue = new SplQueue(); //队列数据结构->先进先出 2 $queu

UVA11995I Can Guess the Data Structure!(stack + queue + priority_queue)

题目:UVA11995I Can Guess the Data Structure!(stack + queue + priority_queue) 题目大意:给你两种指令,1代表让1后面的数字进入这个数据结构,2代表无差错的从数据结构中取出这个数字,问这个数据结构是stack还是queue还是priority_queue,还是不确定,还是以上均不可能. 解题思路:用STL中的这些数据结构来模拟一下,模拟成功就是这种数据结构,注意pop的时候要判断是否empty. 代码: #include <c

Chapter eight Data Structure(数据结构)

数据结构:可以认为是一个集合,并且提供集合上的若干操作. 队列 Queue支持操作:O(1) Push / O(1) Pop / O(1) Top BFS的主要数据结构 栈 Stack支持操作:O(1) Push / O(1) Pop / O(1) Top 非递归实现DFS的主要数据结构 1.

数据结构10:栈和队列

数据结构栈(Stack)和队列(Queue)详解 本章讲解了两种特殊的线性表结构——栈和队列.读者要重点理解栈的“先进后出”原则和队列的“先进先出”原则,体会两种特殊的线性表结构的应用场景. 本章内容: 1. 栈(Stack)的概念和应用及C语言实现 2. 数据结构实践项目之进制转换器 3. 括号匹配算法及C语言实现 4. 队列(Queue):“先进先出”的数据结构 5. 数据结构实践项目之变态的停车场管理系统 6. 扑克牌游戏及C语言实现 原文地址:https://www.cnblogs.co