golang中用链表实现栈
发布时间:2020-12-16 09:23:30 所属栏目:大数据 来源:网络整理
导读:node通过prev字段进行关联,stack维护栈顶节点 stack.go package stacktype Stack struct { top *node length int}type node struct { value interface{} prev *node}// 创建一个栈func New() *Stack { return Stack{nil,0}}// 取栈长度func (s *Stack) Len(
node通过prev字段进行关联,stack维护栈顶节点
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |