温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

golang中用链表实现栈

发布时间:2020-07-20 11:38:18 来源:网络 阅读:657 作者:ustb80 栏目:编程语言

node通过prev字段进行关联,stack维护栈顶节点
golang中用链表实现栈

stack.go

package stack type Stack struct { top *node length int } type node struct { value interface{} prev *node } // 创建一个栈 func New() *Stack { return &Stack{nil, 0} } // 取栈长度 func (s *Stack) Len() int { return s.length } // 查看栈顶元素 func (s *Stack) Peek() interface{} { if s.length == 0 { return nil } return s.top.value } // 出栈 func (s *Stack) Pop() interface{} { if s.length == 0 { return nil } n := s.top s.top = n.prev s.length-- return n.value } // 入栈 func (s *Stack) Push(value interface{}) { n := &node{value, s.top} s.top = n s.length++ } 

main.go

package main import ( "./stack" "fmt" ) func main() { st := stack.New() st.Push(111) st.Push(222) fmt.Println(st.Peek(), st.Len()) item := st.Pop() fmt.Println(item) fmt.Println(st.Peek(), st.Len()) } 

输出:

222 2 222 111 1
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI