2019-04-13  本文已影响0人  转相因

概述

栈是数据按照后进先出LIFO原则组成的集合.添加和移除元素都是在栈顶进行

应用

网页跳转后一层层返回, crtl+z撤销操作等等

栈的实现

New() //生成栈
Push() //入栈
Pop() //出栈

代码实现

package stack

import (
    "sync"
)

type Item interface{}

type Stack struct {
    items []Item
    lock  sync.RWMutex
}

// 创建栈
func New() *Stack {
    return &Stack{}
}

// 入栈
func (s *Stack) Push(t Item) {
    s.lock.Lock()
    defer s.lock.Unlock()
    s.items = append(s.items, t)
}

//出栈
func (s *Stack) Pop() Item {
    s.lock.Lock()
    defer s.lock.Unlock()
    item := s.items[len(s.items)-1]
    s.items = s.items[:len(s.items)-1]
    return item
}

测试用例: stack_test.go.

上一篇 下一篇

猜你喜欢

热点阅读