Int stack Go-ban
Innen: Programozás Wiki
Ugrás a navigációhozUgrás a kereséshezInt típusok tárolására alkalmas egyszerű verem implementációja, Go nyelven:
stack.go:
package stack
import "os"
// list típus
type list struct {
next *list
value int
}
// Stack típus
type Stack struct {
size int
first *list
}
// Stack létrehozása
func NewStack() *Stack {
p := new(Stack)
p.size = 0
p.first = nil
return p
}
// int bedobása a verembe
func (p *Stack) Push(in int) {
l := new(list)
l.next = p.first
l.value = in
p.first = l
p.size++
}
// int kivétele a veremből
func (p *Stack) Pop() (int,os.Error) {
if p.first != nil {
out := p.first.value
p.first = p.first.next
p.size--
return out,nil
}
return 0,os.NewError("Empty")
}
// legfelső elem lekérdezése
func (p *Stack) Top() (int,os.Error) {
if p.first != nil {
return p.first.value,nil
}
return 0,os.NewError("Empty")
}
// Üres-e?
func (p *Stack) IsEmpty() bool {
return p.first == nil
}
// verem méretének lekérdezése
func (p *Stack) Size() int {
return p.size
}
És ennek egy szájbarágós felhasználása:
main.go:
package main
import (
"fmt"
"os"
"./stack"
)
func main() {
st := stack.NewStack()
for i:=0; i<10; i++ {
st.Push(i)
}
fmt.Printf("stack size: %d\n",st.Size())
for !st.IsEmpty() {
val,err := st.Pop()
if err == nil {
fmt.Printf("%d, ",val)
} else {
fmt.Printf("\n Error: %s\n", err.String())
os.Exit(1)
}
}
fmt.Printf("\n")
}