golang中用链表实现栈
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang中用链表实现栈相关的知识,希望对你有一定的参考价值。
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 &Stacknil, 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 := &nodevalue, 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
以上是关于golang中用链表实现栈的主要内容,如果未能解决你的问题,请参考以下文章