链表栈的结构定义如下:
type Node struct { Next *Node Val interface{} } type LinkedListStack struct { TopNode *Node // 栈顶结点 }
实现操作如下:
- 栈是否空栈
- 取栈顶元素
- 入栈
- 出栈
- 清空栈
- 遍历栈
代码如下:
package main import "fmt" /* 基于链表实现的栈 */ type Node struct { Next *Node Val interface{} } type LinkedListStack struct { TopNode *Node // 栈顶结点 } // 创建栈 func NewLinkedListStack() *LinkedListStack { return &LinkedListStack{nil} } // 判断栈是否为空栈 func (this *LinkedListStack) IsEmpty() bool { return this.TopNode == nil } // 出栈操作 func (this *LinkedListStack) Pop() interface{} { if this.IsEmpty(){ return nil } v := this.TopNode.Val this.TopNode = this.TopNode.Next return v } // 返回栈顶元素 func (this *LinkedListStack) Top() interface{} { if this.IsEmpty(){ return nil } return this.TopNode.Val } // 清空栈 func (this *LinkedListStack) Flush() { this.TopNode = nil } // 栈的遍历 func (this *LinkedListStack) Print() { if this.IsEmpty() { fmt.Println("Empty stack!") }else { cur := this.TopNode for cur != nil { fmt.Println(cur.Val) cur = cur.Next } } } func main() { }