Golang使用数序结构实现线性表的增删查改

使用顺序结构实现线性表CRUD
package main

import (
	"errors"
	"fmt"
)

/*
 使用顺序存储结构定义线性表
 1.定义容量
 2.Get方法获取指定位置的元素
 3.Set方法设置指定位置的元素值
 3.Add添加新元素
 4.Del删除指定位置的元素
 5.DelByValue
 6.Size获取线性表的长度
 */

//定义常量
const(
	MAXSIZE = 100
)

//定义全局变量
var(
	 linerList [MAXSIZE]int = [MAXSIZE]int{}
	 size int = 0
)


//获取线性表长度
func Size() int {
	return  size
}

//添加一个元素到线性表中
func Add(value int) (bool, error){

	if size > MAXSIZE {
		return false,errors.New("线性表空间已满不能再插入新的元素")
	}
	linerList[size] = value
	size++
	return true,nil
}

//获取指定位置元素值
func Get(i int) (int, error){
	if i < 0 || i >= size {
		return -1,errors.New("索引不能为负数或索引越界")
	}
	return linerList[i],nil
}

//获取线性表的元素列表
func Iterator() []int  {
	return linerList[:size]
}

//删除指定位置的元素
func Del(i int) (bool,error)  {
	if i < 0 || i >= size {
		return false,errors.New("索引不能为负数或索引越界")
	}

	for n :=i; n < size; n++{
		linerList[n]= linerList[n+1]
	}
	size--
	return true,nil
}

//删除指定元素
func DelByValue(value int)(bool,error)  {

	var position int
	for i:=0; i < size; i++{
		if linerList[i]  == value{
			position = i
			break
		}
	}

	for i:= position; i < size; i++{
		linerList[i] =linerList[i+1]
	}
	size--
	return true,nil
}

//在指定位置插入新的元素
func Set(i,value int) (bool,error){

	if i < 0 || i >= size {
		return false,errors.New("索引不能为负数或索引越界")
	}

	for n := size; n >=i; n--{
		linerList[n+1] = linerList[n]
	}
	linerList[i] = value
	size++
	return true,nil
}

func main(){

	Add(1)
	Add(2)
	Add(3)
	Add(4)
	fmt.Printf("v:%v\n",Iterator())
	fmt.Printf("size:%d\n",Size())
	Set(2,101)
	fmt.Printf("---------------------------------\n")
	fmt.Printf("v:%v\n",Iterator())
	fmt.Printf("size:%d\n",Size())
	Del(2)
	fmt.Printf("---------------------------------\n")
	fmt.Printf("v:%v\n",Iterator())
	fmt.Printf("size:%d\n",Size())
	DelByValue(1)
	fmt.Printf("---------------------------------\n")
	fmt.Printf("v:%v\n",Iterator())
	fmt.Printf("size:%d\n",Size())
}


go run linerlist.go 
v:[1 2 3 4]
size:4
---------------------------------
v:[1 2 101 3 4]
size:5
---------------------------------
v:[1 2 3 4]
size:4
---------------------------------
v:[2 3 4]
size:3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值