スタックの概要

  • LIFO: Last In First Out

操作

push

pop

Code

package main

import "fmt"

type Stack struct {
	data []int
}

func NewStack() *Stack {
	return &Stack{}
}

func (s *Stack) Show() {

	fmt.Printf("showing stack\n---\n")
	for i := len(s.data) - 1; i >= 0; i-- {
		fmt.Printf("|%d|\n", s.data[i])
		fmt.Println("|-|")
	}
}

func (s *Stack) push(x int) {
	s.data = append(s.data, x)
}
func (s *Stack) pop() {
	if len(s.data) != 0 {
		s.data = s.data[:len(s.data)-1]
	}

}
func (s Stack) top() int {
	fmt.Println(s.data[len(s.data)-1])
	return s.data[len(s.data)-1]
}
func (s Stack) isEmpty() bool {
	return len(s.data) == 0
}

func main() {

	s := NewStack()
	fmt.Println("Stack Empty:", s.isEmpty())

	s.push(5)
	s.push(3)
	s.push(8)
	s.Show()
	s.pop()
	s.Show()
	s.top()
	fmt.Println("Stack Empty:", s.isEmpty())

}