SinceNow.net

go 顺序表

Go实现顺序表

phpangel   2024-06-03 10:14:19

线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,这种表示也称作线性表的顺序存储结构或顺序映像。通常,称这种存储结构的线性表为顺序表(Sequential List)。其特点是,逻辑上相邻的数据元素,其物理次序也是相邻的。

通常用数组来描述数据结构中的顺序存储结构。由于线性表的长度可变,且所需最大存储空间随问题不同而不同,则在Go语言通常可用切片结构来表示线性表,描述如下:

// 定义顺序表的结构体
type SequenceList struct {
    data []interface{} // 使用空接口存储任意类型的数据
    len  int           // 记录顺序表的长度
}

1、初始化

顺序表的初始化操作就是构造一个空的顺序表。

// 初始化顺序表
func NewSequenceList() *SequenceList {
    return &SequenceList{
        data: make([]interface{}, 10), // 初始分配10个元素的空间
        len:  0,
    }
}

为顺序表动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。2、 将表的当前长度设为0。

2、添加元素

// 在顺序表尾部添加元素
func (list *SequenceList) Append(val interface{}) {
    if list.len >= len(list.data) {
        // 如果数组已满,可以选择扩容或者返回错误
        list.data = append(list.data, val)
    } else {
        list.data[list.len] = val
    }
    list.len++
}
 

3、输出顺序表

// 打印顺序表
func (list *SequenceList) Display() {
    for i := 0; i < list.len; i++ {
        fmt.Printf("%v ", list.data[i])
    }
    fmt.Println()
}
 

4、主函数

func main() {
    seqList := NewSequenceList()
    seqList.Append(1)
    seqList.Append(2)
    seqList.Append(3)
    seqList.Display() // 输出: 1 2 3 
}

这个示例提供了一个简单的顺序表实现,包括初始化、添加元素和打印元素的功能。在实际应用中,你可能需要根据具体需求实现更多的功能,例如插入、删除、查找等操作。

go 顺序表

0 Comments

message
沪ICP备2024072411号 © 2022 SinceNow.net - GitHub
Login