使用Golang实现栈的链式存储

栈就像一个水杯后进先出,栈的链式存储中后进去元素的next总是指向先进去的元素, 栈顶元素总是和最后一个进去的元素相同

type Elem int

// Node 元素节点结构

type Node struct {

data Elem

next *Node

}

// StackLink 栈

type StackLink struct {

top    *Node // 栈顶元素

length int

}

// InitStack 初始化一个栈,栈先进后出

func (s *StackLink) InitStack() {

s.top = nil

}

// Push 添加一个栈元素

func (s *StackLink) Push(data Elem) {

// 创造一个节点

node := new(Node)

node.data = data

node.next = s.top

s.top = node

s.length++

}

// Pop 弹出一个元素

func (s *StackLink) Pop(e *Elem) error {

if s.Empty() {

return errors.New("empty stack")

}

*e = s.top.data

node := s.top

s.top = node.next

s.length--

return nil

}

// Empty 是否为空栈

func (s *StackLink) Empty() bool {

return s.top == nil

}

// Length 栈的元素个数

func (s *StackLink) Length() int {

return s.length

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,874评论 0 33
  • 记得大一的时候自学数据结构,那时候却没有深入的去研究代码,只是了解了个表面的东西,不过还好有基础,并且去年的时候看...
    KevinCool阅读 689评论 1 3
  • 队列,顾名思义就是像排队一样,先来先到,先进先出。 type Elem int type Node struct ...
    萧末阅读 645评论 0 1
  • 20/30#写手圈连续写作训练营# 【读书】 【读书感悟】 【写作】《1910(第6节)》 作者:白鼠 晚上大个和...
    作家白鼠阅读 313评论 1 0
  • about Stream 什么是流? Stream是java8中新增加的一个特性,被java猿统称为流. Stre...
    jsondream阅读 25,446评论 8 47

友情链接更多精彩内容