01 顺序表Go实现

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()
}
C:\Users\Administrator\AppData\Local\Temp\___go_build_main_go__1_.exe #gosetup
1 2 3 4 5 
5
3
3
1 2 3 99 4 5 
1 2 3 4 5 
Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值