package stackimport ("algorithm-go/link""errors")// ArrayStack 基于数组实现的线性栈type ArrayStack struct {// count 当前栈中元素数量count int// dataArray 初始数组容量为16dataArray [16]int}// push 将元素压入栈,不支持自动扩容func (stack *ArrayStack) push (element int) (err error) {if stack.count >= len(stack.dataArray){return errors.New("栈已空")}// 将元素添加至对应位置stack.dataArray[stack.count - 1] = elementstack.count ++return nil}// pop 将元素弹出栈func (stack *ArrayStack) pop() (element int,err error) {if stack.count <= 0{return 0, errors.New("栈已空")}stack.count --return stack.dataArray[stack.count],nil}// LinkedStack 基于链表实现的链式栈type LinkedStack struct {capacity intcount inthead *link.Node}// push 数据压入栈func (stack *LinkedStack) push(element int) (err error) {if stack.count >= stack.capacity {return errors.New("栈已空")}newNode :=&link.Node{Data: element, Next: stack.head}stack.head = newNodestack.count ++return nil}// popfunc (stack *LinkedStack) pop() (element int,err error) {if stack.count <= 0{return 0,errors.New("栈已空")}newHead := stack.headstack.head = stack.head.Nextreturn newHead.Data, err}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。