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语言实现链式栈的主要内容,如果未能解决你的问题,请参考以下文章

Go并发编程

go语言循环队列的实现

GO_11:GO语言基础之并发concurrency

Go语言——goroutine并发模型

GO语言基础之并发concurrency

我的全栈之路-Go语言基础之Go语言开发环境搭建