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中用链表实现栈的主要内容,如果未能解决你的问题,请参考以下文章

用golang实现的单向链表

Golang之实现(链表)

【golang】HashMap原理和实现

golang 232用栈实现队列

golang 代码实现单调栈

golang技术栈常见网址