本文主要是介绍Go语言实现链栈,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
package mainimport "fmt"//节点
type Node struct {next *Nodedata int
}//链式栈
type LinkStack struct {head *Nodelength int
}//创建节点
func CreateNode(value int) *Node{return &Node{nil,value,}
}//创建链表,初始化一个空头节点
func CreateLinkStack() *LinkStack{return &LinkStack{&Node{nil,0,},0,}
}//判断栈是否为空
func (stack *LinkStack)StackEmpty()bool{return stack.head.next == nil
}//进栈操作
func (stack *LinkStack)Push(data int){p := CreateNode(data)p.next = stack.head.nextstack.head.next = pstack.length++
}//出栈操作
func (stack *LinkStack)Pop()int{if stack.head.next == nil{return -999}p := stack.head.nextdata := p.datastack.head.next = p.nextp = nilstack.length--return data
}//获取栈顶元素
func (stack *LinkStack)Top()int{if stack.head.next == nil{return -999}data := stack.head.next.datareturn data
}func main(){stack := CreateLinkStack()stack.Push(3)stack.Push(4)stack.Push(5)stack.Push(6)fmt.Printf("%d\n", stack.Top())stack.Pop()fmt.Printf("%d\n",stack.Top())
}
这篇关于Go语言实现链栈的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!