stl-go/stack/stack.go
NorthCityChen 0ab851e49f ADD:heap
2022-04-26 14:26:02 +08:00

47 lines
832 B
Go

/*
* @Author: NorthCity1984
* @LastEditTime: 2022-04-13 21:41:20
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCity1984 All rights reserved.
*/
package stack
import "gitee.com/NorthCityChen/stl-go/dequeue"
type Number interface {
int | int64 | float32 | float64
}
type stack[T Number] struct {
content *dequeue.Dequeue[T]
}
func Init[T Number]() *stack[T] {
return &stack[T]{content: dequeue.Init[T]()}
}
func (s *stack[T]) IsEmpty() bool {
return s.content.IsEmpty()
}
func (s *stack[T]) Size() int {
return s.content.Size()
}
func (s *stack[T]) Push(val T) bool {
return s.content.LPush(val)
}
func (s *stack[T]) Pop() (T, bool) {
return s.content.LPop()
}
func (s *stack[T]) Top() (T, bool) {
return s.content.LNode()
}
func (s *stack[T]) Clear() bool {
return s.content.Clear()
}