使用顺序结构实现线性表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
Golang使用数序结构实现线性表的增删查改
最新推荐文章于 2021-03-27 11:35:35 发布