Go语言的基本数据类型的切片Slice其实就是传统的动态数组,它本是就可以当成一个栈来使用。
package main
import (
"fmt"
)
type stack []int // 整数型栈
// 入栈
func (stk *stack) push(x int) {
*stk = append(*stk, x)
}
// 出栈
func (stk *stack) pop() int {
res := (*stk)[len(*stk)-1]
*stk = (*stk)[0 : len(*stk)-1]
return res
}
// 栈顶
func (stk *stack) top() int {
return (*stk)[len(*stk)-1]
}
// 栈尾
func (stk *stack) tail() int {
return (*stk)[0]
}
// 判断是否为空
func (stk *stack) isEmpty() bool {
return len(*stk) == 0
}
// 获取长度
func (stk *stack) size() int {
return len(*stk)
}
func main() {
var stk stack
stk.push(1)
stk.push(2)
stk.push(3)
stk.push(4)
stk.push(5)
fmt.Println(stk) // [1 2 3 4 5]
stk.pop()
fmt.Println(stk) // [1 2 3 4]
fmt.Println(stk.pop()) // 4
fmt.Println(stk.size()) // 3
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)