美文网首页
数据结构:Go 数组实现栈操作

数据结构:Go 数组实现栈操作

作者: 沙漠中的猴 | 来源:发表于2018-11-22 16:19 被阅读0次

简介

栈的特点:

  • 单向操作
  • 先入后出(First In Last Out) FILO

操作

压栈、弹栈、清空、创建 等

代码

package main

import "fmt"

type Element interface{}

const NoData int = 0

const MaxSize int = 5

type Stack struct {
    Data [MaxSize]Element
    Top  int
}

// 创建一个栈
func Create() *Stack {
    var data [MaxSize]Element
    return &Stack{Data: data, Top: 0}
}

// 获取栈的长度
func (s *Stack) Len() int {
    return s.Top
}

// 判断栈是否为空
func (s *Stack) IsEmpty() bool {
    if s.Top == 0 {
        return true
    }

    return false
}

//判断栈是否满了
func (s *Stack) IsFull() bool {
    if s.Top == MaxSize {
        return true
    }

    return false
}

// 入栈
func (s *Stack) Push(e Element) {

    if s.IsFull() {
        fmt.Println(" Stack is full")
        return
    }

    s.Data[s.Top] = e
    s.Top++

    return
}

// 出栈
func (s *Stack) Pop() Element {
    if s.IsEmpty() {
        fmt.Println("stack is empty")
        return NoData
    }

    s.Top--
    data := s.Data[s.Top]
    s.Data[s.Top] = 0

    return data
}

func (s *Stack) Clear() {
    var data [MaxSize]Element
    s.Data = data
    s.Top = 0
}

func main() {
    stack := Create()

    //fmt.Println(stack.Pop())
    stack.Push(1)
    stack.Push(1)
    stack.Push(1)
    stack.Clear()
    stack.Push(1)
    stack.Push(1)
    fmt.Println(stack.Len())
    fmt.Printf("%#v\n", *stack)

}

相关文章

  • 数据结构:Go 数组实现栈操作

    简介 栈的特点: 单向操作 先入后出(First In Last Out) FILO 操作 压栈、弹栈、清空、创建...

  • 数据结构之---栈

    数据结构之---栈 顺序栈 内部采用数组实现 结构图; 定义结构体: 函数声明 进栈以及出栈 图示: 其余操作 链...

  • 栈的Java实现

    利用数组实现栈的操作,栈的操作是先进后出。

  • 数据结构学习

    栈 先进先出的数据结构 接口api 接口抽象定义 异常类定义 用数组实现栈 用数组实现栈,这种方法存取数据在没有扩...

  • 利用数组实现栈操作(go版本)

  • 栈实现

    栈是先进先出数据结构。下面基于数组,实现栈结构。 Stack继承Vector elementData:Object...

  • 3-玩转数据结构-栈和队列

    我们会介绍两个全新的线性数据结构,栈与队列。 栈Stack 栈也是一种线性结构;相比数组,栈对应的操作是数组的子集...

  • Go语言数据结构和算法-使用Slice实现栈

    Go语言数据结构和算法-使用Slice实现栈 栈是Last-In-First-Out (LIFO)(后进先出)的数...

  • 栈和队列

    1.1 栈的应用场景 栈是一种先进后出的数据结构,具体实现的底层可以用数组。 在各类编辑软件中都有应用:撤销操作。...

  • 数据结构-栈和队列

    Stack 栈也是一种线性结构 相比数组,栈对应的操作是数组的子集 栈是一种后进先出的数据结构(LIFO) 只能从...

网友评论

      本文标题:数据结构:Go 数组实现栈操作

      本文链接:https://www.haomeiwen.com/subject/qiwlqqtx.html