码迷,mamicode.com
首页 > 编程语言 > 详细

go语言实现链式栈

时间:2019-08-31 00:53:36      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:rem   highlight   bool   初始化   turn   nod   span   type   style   

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 := StackNode{el: 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语言实现链式栈

标签:rem   highlight   bool   初始化   turn   nod   span   type   style   

原文地址:https://www.cnblogs.com/skzxc/p/11385547.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!