代码片段如下:
/*
* .::::.
* .::::::::.
* :::::::::::
* ..:::::::::::'
* '::::::::::::'
* .::::::::::
* '::::::::::::::..
* ..::::::::::::. Utils:stack 栈和队列
* ``:::::::::::::::: Author:崔金朋
* ::::``:::::::::' .:::.
* ::::' ':::::' .::::::::.
* .::::' :::: .:::::::'::::.
* .:::' ::::: .:::::::::' ':::::.
* .::' :::::.:::::::::' ':::::.
* .::' ::::::::::::::' ``::::.
* ...::: ::::::::::::' ``::.
* ```` ':. ':::::::::' ::::..
* '.:::::' ':'````..
*/
package main
import (
"errors"
)
type CommonStack struct {
stack []interface{}
}
func (s *CommonStack) CommonPush(item interface{}) (bool, error) {
if item == nil {
return false, errors.New("数据不能为空")
}
s.stack = append(s.stack, item)
return true, nil
}
func (s *CommonStack) CommonPop() (interface{}, error) {
length := len(s.stack)
var item interface{}
if length == 0 {
return item, errors.New("数据不存在")
} else if length == 1 {
item = s.stack[0]
s.stack = []interface{}{}
} else {
item = s.stack[length-1]
s.stack = s.stack[0 : length-1]
}
return item, nil
}
func (s *CommonStack) CommonPeek() (interface{}, error) {
length := len(s.stack)
var item interface{}
if length == 0 {
return 0, errors.New("数据不存在")
} else if length == 1 {
item = s.stack[0]
} else {
item = s.stack[length-1]
}
return item, nil
}
func (s *CommonStack) CommonLen() int {
length := len(s.stack)
if length == 0 {
return 0
}
return length
}