// Package stack 堆栈
package stack

// Stack 栈
type Stack struct {
	elem []interface{}
}

// New 初始化空栈
func New() *Stack {
	return new(Stack)
}

// Empty 当前栈是否为空
func (s *Stack) Empty() bool {
	return len(s.elem) <= 0
}

// Size 栈元素个数
func (s *Stack) Size() int {
	return len(s.elem)
}

// Push 入栈
func (s *Stack) Push(e interface{}) {
	s.elem = append(s.elem, e)
}

// Pop 出栈:栈为空时返回nil且不做操作
func (s *Stack) Pop() interface{} {
	if s.Empty() {
		return nil
	}
	e := s.elem[len(s.elem)-1]
	s.elem = s.elem[:len(s.elem)-1]
	return e
}

// Top 栈顶元素信息:栈为空时返回nil
func (s *Stack) Top() interface{} {
	if s.Empty() {
		return nil
	}
	return s.elem[len(s.elem)-1]
}

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐