go语言实现链式栈
Posted skzxc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言实现链式栈相关的知识,希望对你有一定的参考价值。
haa哈哈==
import "errors"
var (
// ErrEmpty 栈为空
ErrEmpty = errors.New("stack is empty")
)
// StackNode 栈节点
type StackNode struct
el interface // 可以存储任何类型数据
next *StackNode
// LinkStack 栈空间
type LinkStack struct
top *StackNode
count int
// New 栈初始化
func New() *LinkStack
return new(LinkStack) // new() 方法刚好返回指针
// Push 入栈
func (l *LinkStack) Push(el interface) (err error)
s := StackNodeel: el, next: l.top
l.top = &s
l.count++
return
// Pop 出栈
func (l *LinkStack) Pop() (el interface, err error)
if l.count == 0
return el, ErrEmpty
l.count--
el = l.top.el
l.top = l.top.next
return
// Length 获取栈长度
func (l *LinkStack) Length() int
return l.count
// Empty 判断栈是否为空
func (l *LinkStack) Empty() bool
if l.count == 0
return true
return false
// Clear 清空栈
func (l *LinkStack) Clear()
l.count = 0
l.top = nil
以上是关于go语言实现链式栈的主要内容,如果未能解决你的问题,请参考以下文章