main.go
// Go语言·数据结构·栈
package main
import (
"fmt"
)
var content string = `
————————————————Go语言·数据结构·栈————————————————————
一、栈 stack (堆栈)
先入后出
FILO -First In Last Out
栈顶:Top 变化的
栈底:Bottom 固定不变
空栈:
二、栈的应用场景
1.子程序的调用:在跳往子程序前,会先将下个指令的地址存到栈(堆栈)中,直到
子程序执行完后在将地址取出,以回到原来的程序中。
2.处理递归调用:和子程序的调用类似。只是除了存储下一个指令的地址外,也将参
数、区域变量等数据存入栈(堆栈)中。
3.表达式的转换与求值
4.二叉树的遍历
5.图形的深度优先(depth-first)搜索法
`
// 使用数组来模拟一个栈
type Stack struct {
MaxTop int //表示栈最大可以存放的
Top int //栈顶 ,
arr [5]int //数组来模拟栈
}
// 入栈
func (this *Stack) Push(val int) (err error){
if this.Top == this.MaxTop -1 {
fmt.Println("栈满咯~~~")
}
this.Top++
this.arr[this.Top] = val
return
}
// 出栈
func (this *Stack) Pop()(val int,err error) {
if this.Top == -1 {
fmt.Println("栈空的~~")
return
}
val = this.arr[this.Top]
this.Top--
}
func (this *Stack) Show() {
fmt.Println("栈的内容如下:")
if this.Top == -1 {
fmt.Println("栈空的~~")
return
}
// 从栈顶开始打
for i := this.Top; i>=0; i-- {
fmt.Printf("this.arr[%d] = %v \n",i,this.arr[i])
}
fmt.Println()
}
func main() {
stack := &Stack{
MaxTop : 5,
Top:-1, //栈顶为-1,表示为空
}
for i := 0; i < 5; i++ {
stack.Push(i)
}
stack.Show()
}
网友评论