stack.go 中的源代码将分四个部分介绍。第一部分如下:

    stack.go 的第二部分包含了 Push() 函数的实现:

    1. func Push(v int) bool {
    2. if stack == nil {
    3. stack = &Node{v, nil}
    4. size = 1
    5. return true
    6. }
    7. temp := &Node{v, nil}
    8. temp.Next = stack
    9. size++
    10. return true
    11. }

    第三部分包含 Pop() 函数的实现:

    stack.go 的第四个代码段如下:

    1. func traverse(t *Node) {
    2. if size == 0 {
    3. fmt.Println("Empty Stack!")
    4. return
    5. }
    6. fmt.Printf("%d -> ", t.Value)
    7. t = t.Next
    8. }
    9. fmt.Println()
    10. }

    stack.go 的最后一部分如下:

    如你所见,stack.go 的源代码比 queue.go 的稍微短一点,这主要是因为栈背后的思想比队列更简单。

    1. Pop() failed!
    2. 100 ->
    3. 200 -> 100 ->
    4. 9 8 7 6 5 4 3 2 1 0 200 100