概念
线性表的顺序表示指的是用一组地址连续的储存单元依次储存线性表的数据元素,这种表示也称作线性表的顺序存储结构或顺序。通常,称这种存储结构的线性为顺序表。特点,逻辑上相邻的数据元素,其物理性质也相邻的。
每一元素的储存位置都和线性表的起始位置相差一个常数,这个常数和数据元素在线性表中的位序成正比。由此,只要确定了存储线性表的起始位置,线性表的任一元素都可随机存取,所以线性表的顺序存储结构是一种随机存储结构。
代码
package main
import "fmt"
const length = 10
type Sunxun struct {
data [length]int
last int
}
/**
创建顺序表
*/
func InitList(biao *Sunxun) {
biao.last = 0
}
/**
插入
*/
func InSert(biao *Sunxun,l int,loacal int) {
if loacal < 1 || loacal > biao.last+1 {
fmt.Println("越界")
return
}
if biao.last == length {
fmt.Println("存储空间已满")
return
}
for j := biao.last; j > loacal ; j-- {
biao.data[loacal] = biao.data[loacal-1]
}
biao.data[loacal-1] = l
biao.last++
//PrintSlice(biao)
}
/**
删除数据
*/
func Delete(biao *Sunxun,i int) {
if i < 1 || i > biao.last {
fmt.Println("越界")
return
}
for j := i - 1; j < biao.last-1 ; j++ {
biao.data[j] = biao.data[j+1]
}
biao.last--
PrintSlice(biao)
}
/**
获取i处数据
*/
func GetEelem(biao *Sunxun,i int) {
if i < 1 || i > biao.last {
fmt.Println("越界")
return
}
fmt.Println(biao.data[i-1])
}
/**
遍历链表
*/
func PrintSlice(biao *Sunxun){
for i := 0; i < biao.last ; i++ {
fmt.Println(biao.data[i])
}
}
func main() {
var biao *Sunxun = &Sunxun{}
InitList(biao)
InSert(biao,1,1)
InSert(biao, 2, 2)
InSert(biao, 3, 3)
//GetEelem(biao ,3)
Delete(biao, 2);
}