go数组栈实现
package StackArray
type StackArray interface {
Clear()
Push(data interface{})
Pop() interface{}
IsFull() bool
IsNull() bool
Size() int
}
type Stack struct {
data []interface{}
size int
currentsize int
}
func NewStack() *Stack {
stack := new(Stack)
stack.data = make([]interface{},0,10)
stack.size = 10
stack.currentsize = 0
return stack
}
func (stack *Stack)IsFull() bool{
if stack.currentsize >= stack.size {
return true
}else {
return false
}
}
func (stack *Stack)IsNull() bool{
if stack.currentsize == 0 {
return true
}else {
return false
}
}
func (stack *Stack)Push(data interface{}){
if !stack.IsFull() {
stack.data = append(stack.data, data)
stack.currentsize++
}
}
func (stack *Stack)Pop() interface{}{
if !stack.IsNull() {
pop := stack.data[stack.currentsize-1]
stack.data = stack.data[:stack.currentsize-1]
stack.currentsize--
return pop
}
return nil
}
func (stack *Stack)Clear(){
stack.data = make([]interface{},0,10)
stack.size = 10
stack.currentsize = 0
}
func (stack *Stack)Size() int{
return stack.currentsize
}