go语言实现栈

作者: ljh123 | 来源:发表于2018-04-21 13:45 被阅读3次

```

package main

import "fmt"

/* 栈结构*/

type Stackstruct {

val []interface{}

length uint32

}

/* 构造一个空栈*/

func (S *Stack) InitStack() {

S.val = make([]interface{},0)

S.length =0

}

/* 销毁栈*/

func (S *Stack) DestroyStack() {

S.ClearStack()

}

/* 清空栈*/

func (S *Stack) ClearStack() {

S.InitStack()

}

/* 判断栈是否为空,空的话,返回true,不空返回false */

func (S *Stack) StackEmpty() bool {

if S.length <=0 {

return true

  }else {

return false

  }

}

/* 返回栈的长度*/

func (S *Stack) StackLength() uint32 {

return S.length

}

/* 获取栈顶元素*/

func (S *Stack) GetTop()interface{} {

return S.val[0]

}

/* 插入一个元素到栈中*/

func (S *Stack) Push(einterface{}) {

S.val = append(S.val, e)

S.length +=1

}

/* 出栈*/

func (S *Stack) Pop()interface{} {

if S.length ==0 {

return nil

}

e := S.val[0]

S.length -=1

  S.val = S.val[:S.length]

return e

}

/* 从栈低到栈顶依次对S的每个元素调用visit().一旦visit()失败,则栈操作失败*/

func (S *Stack) StackTraverse(visitfunc(a ...interface{}))  {

for i := uint32(0);i < S.length;i +=1 {

visit(S.val[i])

}

}

func p(a ...interface{}) {

fmt.Print(a[0]," ")

}

```

相关文章

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

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

  • go语言实现栈

    ``` package main import "fmt" /* 栈结构*/ type Stackstruct {...

  • 优秀网站

    一.语言栈 GO go 博客 Go中国 zupzup : web Ewan : 微服务 go开源项目 Beego:...

  • golang内存逃逸

    一篇很好的博客: Go 语言机制之栈与指针 Go 语言机制之逃逸分析 Go 语言机制之内存剖析 Go 语言机制之数...

  • Go语言实现TCP通信

    章节 go 优势 go 实现 TCP 通信 1 go 语言优势 1.1 go 语言优势 2 go 实现TCP通信 ...

  • 004 go语言实现栈

    1 数据结构 数据结构: 要实现的功能:0 栈的初始化1 获取栈长度2 入栈3 出栈4 清空栈内容5 判断栈是否为...

  • Go 学习

    go语言局部变量分配在栈还是堆Golang 垃圾回收剖析go语言坑之for range

  • 使用 ScopeGuard 让代码更加安全可靠

    ScopeGuard用于实现Go语言中defer的功能。其主要思想和ScopeLock类似,即利用C++栈展开机制...

  • 3. 栈的操作

    1. 栈的操作-c语言实现2. 栈操作的实现-顺序栈和链栈 3. 栈的实现与遍历4. c语言的函数调用栈5. 两个...

  • GO语言实现堆、栈、队列、优先级队列

    前言 C++、java等语言都实现了栈、堆、队列、优先级队列等。但是Go语言却没有。我们在实际使用中却是需要这些基...

网友评论

    本文标题:go语言实现栈

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