概述
栈是数据按照后进先出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.
网友评论