企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
栈就像一个水杯后进先出,栈的链式存储中后进去元素的next总是指向先进去的元素, 栈顶元素总是和最后一个进去的元素相同 ``` type Elem int // Node 元素节点结构 type Node struct { data Elem next *Node } // StackLink 栈 type StackLink struct { top *Node // 栈顶元素 length int } // InitStack 初始化一个栈,栈先进后出 func (s *StackLink) InitStack() { s.top = nil } // Push 添加一个栈元素 func (s *StackLink) Push(data Elem) { // 创造一个节点 node := new(Node) node.data = data node.next = s.top s.top = node s.length++ } // Pop 弹出一个元素 func (s *StackLink) Pop(e *Elem) error { if s.Empty() { return errors.New("empty stack") } *e = s.top.data node := s.top s.top = node.next s.length-- return nil } // Empty 是否为空栈 func (s *StackLink) Empty() bool { return s.top == nil } // Length 栈的元素个数 func (s *StackLink) Length() int { return s.length } ```