package main
import "fmt"
type Node struct {
data interface{}
next *Node
}
type LinkedStack struct {
length int
head *Node
}
func NewLinkedStack() LinkedStack {
return LinkedStack{length: 0, head: nil}
}
func (s *LinkedStack) Clear() {
s.length = 0
s.head = nil
}
func (s *LinkedStack) Empty() bool {
return s.head == nil
}
func (s *LinkedStack) Get() interface{} {
if s.Empty() {
panic("栈为空")
}
return s.head.data
}
func (s *LinkedStack) Push(data interface{}) {
newNode := Node{
data: data,
}
if !s.Empty() {
newNode.next = s.head
}
s.head = &newNode
s.length++
}
func (s *LinkedStack) Pop() interface{} {
if s.Empty() {
panic("栈为空")
}
data := s.head.data
s.head = s.head.next
s.length--
return data
}
func (s *LinkedStack) Length() int {
return s.length
}
func main() {
stack := NewLinkedStack()
stack.Push(19)
stack.Push(18)
stack.Push(17)
fmt.Println("是否为空", stack.Empty())
fmt.Println("长度", stack.Length())
fmt.Println(stack.Pop())
fmt.Println(stack.Pop())
fmt.Println(stack.Pop())
fmt.Println(stack.Pop())
}
【数据结构连载一栈】【链式存储栈】golang
最新推荐文章于 2024-10-04 21:49:15 发布