由于
golang未封装stack相关的类,所以自行封装,不过go里面的list可以实现stack的功能
list详解
下面两份代码实现功能相同
list实现
func main() {
list := list.New()
list.PushBack("bai")
list.PushBack("21")
list.PushBack("cn")
list.PushBack("com")
fmt.Println(list.Len())
fmt.Println(list.Back().Value)
fmt.Println(list.Remove(list.Back()))
fmt.Println(list.Len())
fmt.Println(list.Back().Value)
}
list实现stack后实现
type Stack struct {
list *list.List
}
func NewStack() *Stack {
//初始化list
list := list.New()
return &Stack{list}
}
func (stack *Stack) Push(value interface{}) {
stack.list.PushBack(value)
}
func (stack *Stack) Pop() interface{} {
v := stack.list.Back()
if v != nil {
stack.list.Remove(v)
return v.Value
}
return nil
}
func (stack *Stack) Peak() interface{} {
v := stack.list.Back()
if v != nil {
return v.Value
}
return nil
}
func (stack *Stack) Len() int {
return stack.list.Len()
}
func (stack *Stack) Empty() bool {
return stack.list.Len() == 0
}
func main() {
stack := NewStack()
stack.Push("bai")
stack.Push("21")
stack.Push("cn")
stack.Push("com")
fmt.Println(stack.Len())
fmt.Println(stack.Peak())
fmt.Println(stack.Pop())
fmt.Println(stack.Len())
fmt.Println(stack.Peak())
}
运行结果
4
com
com
3
cn
该博客介绍了如何在Go语言中利用list实现堆栈功能。通过创建一个Stack结构体,封装了Push、Pop、Peak等操作,展示了如何在实际编程中自定义数据结构以满足特定需求。示例代码展示了如何初始化堆栈、压入元素、弹出元素以及检查堆栈顶元素。
1567

被折叠的 条评论
为什么被折叠?



