数据结构:堆栈
1.简介
堆栈(Stack)常用数据结构的一种。分为栈底和栈顶,只允许栈顶压入或弹出,后入先出。
与队列相似,区别是只能在一头执行,压入或弹出操作。
分类
- 静态栈:栈长度固定不可扩容。
- 动态栈:栈长度可以动态增加。
2.图示
3.演示
package stack
type Stack struct {
arr []interface{}
}
func (s *Stack) Push(obj interface{}) {
s.arr = append(s.arr, obj)
}
func (s *Stack) Pop() interface{} {
length := s.Len()
if length == 0 {
panic("Stack is empty")
}
obj := s.arr[length-1]
s.arr = s.arr[:length-1]
return obj
}
func (s *Stack) Len() int {
return len(s.arr)
}