package main
import "fmt"
const MAX_NUM = 100
type SeqList struct {
list [MAX_NUM]int
length int
}
func (s *SeqList)CreateSeqList(arr [5]int) {
length := len(arr)
for i := 0; i < length; i++ {
s.list[i] = arr[i]
s.length++
}
}
func (s *SeqList)GetSeqLength() int {
return s.length
}
func (s *SeqList)PrintList() {
for i := 0;i < s.length; i++ {
fmt.Print(s.list[i], " ")
}
}
func (s *SeqList)GetElem(loc int) int {
if loc < 0 || loc >= s.length {
fmt.Print("out of range when get element")
return -1
}
return s.list[loc]
}
func (s *SeqList)LocateElem(value int) int {
for i := 0; i < s.length; i++ {
if s.list[i] == value {
return i
}
}
return -1
}
func (s *SeqList)InsertSeqElem(loc, value int) int {
if loc < 0 || loc >= MAX_NUM {
fmt.Print("out of range when insert element")
return -1
}
for i := s.length; i > loc; i-- {
s.list[i] = s.list[i-1]
}
s.list[loc] = value
s.length++
return 0
}
func (s *SeqList)DeleteSeqElem(loc int) int {
if loc < 0 || loc >= MAX_NUM {
fmt.Print("out of range when insert element")
return -1
}
for i := loc; i < s.length-1; i++ {
s.list[i] = s.list[i+1]
}
s.length--
return 0
}
func main() {
arr := [5]int{1, 2 , 3, 4, 5}
seqList := &SeqList{}
seqList.CreateSeqList(arr)
seqList.PrintList()
fmt.Print("\n", seqList.GetSeqLength())
fmt.Print("\n", seqList.GetElem(2))
fmt.Print("\n", seqList.LocateElem(4))
fmt.Print("\n")
seqList.InsertSeqElem(3, 99)
seqList.PrintList()
fmt.Print("\n")
seqList.DeleteSeqElem(3)
seqList.PrintList()
}