Go数据结构——栈

2020-02-09  本文已影响0人  ProgrammingGuy
package main

import (
    "fmt"
)

type stack struct {
    filled int
    data   [10]int
}

func (s *stack) push(value int) {
    if s.filled == 10 {
        panic("stack is full")
    }
    s.data[s.filled] = value
    s.filled++
}

func (s *stack) empty() bool {
    return s.filled == 0
}

func (s *stack) pop() int {
    if s.empty() {
        panic("stack is empty")
    }
    s.filled--
    return s.data[s.filled]
}

func (s *stack) print() {
    for _, v := range s.data {
        fmt.Println(v)
    }
}

func main() {
    s := stack{}
    for i := 0; i < 10; i++ {
        s.push(i)
    }
    s.print()

    fmt.Println("---------------------")

    for i := 0; i < 5; i++ {
        fmt.Println(s.pop())
    }

    fmt.Println("---------------------")

    for i := 0; i < 5; i++ {
        fmt.Println(s.pop())
    }

    fmt.Println("---------------------")

    for i := 0; i < 1; i++ {
        fmt.Println(s.empty())
    }
}
上一篇 下一篇

猜你喜欢

热点阅读