43.Go语言·数据结构·栈

2019-06-20  本文已影响0人  一枼落知天下

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()
}
上一篇 下一篇

猜你喜欢

热点阅读