zoukankan      html  css  js  c++  java
  • 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 := 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
    }
    

      

    ///纵有疾风起,人生不言弃///
  • 相关阅读:
    POJ2182Lost Cows
    BZOJ4003: [JLOI2015]城池攻占
    POJ1635Subway tree systems
    BZOJ1005: [HNOI2008]明明的烦恼
    POJ1182 NOI2001 食物链
    栈的链式实现
    栈的数组实现
    链表ADT的实现
    #ifndef的用法
    using namespace std
  • 原文地址:https://www.cnblogs.com/skzxc/p/11385547.html
Copyright © 2011-2022 走看看