3、17
1、用鏈表實(shí)現(xiàn)棧
package main
import "fmt"
type NodeData struct {
data interface{}
next *NodeData
}
type Stack02 struct {
top ?*NodeData
size int
}
func (stack *Stack02) Push(val interface{}) {
//初始化賦值一個(gè)新的指針變量,指向新入棧的節(jié)點(diǎn)
newNode := &NodeData{val, nil}
if stack.top == nil {
stack.top = newNode
} else { //棧不為空
newNode.next = stack.top
stack.top = newNode
}
stack.size++
}
func (stuck *Stack02) Pop() interface{} {
if stuck.top == nil {
return nil
} else { //棧不空
//棧頂是鏈表的頭部
val := stuck.top.data
//刪除節(jié)點(diǎn)
stuck.top = stuck.top.next
stuck.size--
return val
}
}
func main() {
s := &Stack02{}
s.Push("你好")
s.Push(888)
s.Push('a')
fmt.Println(s.Pop())
fmt.Println(s.Pop())
fmt.Println(s.Pop())
fmt.Println(s.Pop())
}
標(biāo)簽: