golang笔记——手写数据结构——顺序表

使用go语言手动实现数据结构中的顺序表

已在github上开源,欢迎issues

kay2336/goDataStructure: DataStructure (github.com)

其中函数包括:

InitList():初始化
ListLength():返回长度
ListEmpty():返回是否为空
PrintlnAll():输出所有元素
UpdateByIndex():修改特定序号元素的值
JudgeByElem():根据特定值判断元素是否存在
DeleteByElem():删除包含特定值的元素
InsertByIndex():向特定序号插入元素

以下为具体函数的实现

// InitList
// 转存数组至顺序表内
func (list *List) InitList(t [MaxSize]int) {
    //记录转存数组长度
    cnt := 0
    for i, _ := range t {
        (*list).data[i] = t[i]
        cnt++
    }
    (*list).length = cnt
}
// ListLength
// 返回顺序表的的长度
func (list *List) ListLength() int {
    return (*list).length
}
// ListEmpty
// 判断顺序表是否为空
func (list *List) ListEmpty() bool {
    return (*list).length == 0
}
// PrintlnAll
// 输出顺序表内所有数组元素
func (list *List) PrintlnAll() {
    //遍历以顺序表内长度变量为准
    for i := 0; i < (*list).length; i++ {
        fmt.Println("顺序表序号为", i, "的元素为:", (*list).data[i])
    }
    fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")

}
// UpdateByIndex
// 更新顺序表序号为index的元素,将值修改为e
// 特判序号是否合理
func (list *List) UpdateByIndex(i, t int) {
    if i < 0 || i >= (*list).length {
        return
    }
    (*list).data[i] = t
}
// JudgeByElem
// 查询顺序表中是否存在值为e的元素
// 如果有,则返回true,如果没有,则返回false
func (list *List) JudgeByElem(e int) bool {
    for _, v := range (*list).data {
        if v == e {
            return true
        }
    }
    return false
}
// DeleteByElem
// 删除值为e的元素
// 删除一个或者多个
// 删除的是第一个,最后一个,中间个
func (list *List) DeleteByElem(t int) {
    cnt := 0
    for i, v := range (*list).data {
        //如果元素值与t相同,则记录删除元素个数
        //如果不同,则移动当前元素位置至 i-cnt 处
        if v == t {
            cnt++
        } else {
            (*list).data[i-cnt] = (*list).data[i]
        }
    }
    //修正顺序表数组长度
    (*list).length = (*list).length - cnt
}
// InsertByIndex
// 向顺序表插入指定序号的元素
// 特判插入序号是否合理
// 插入指定序号位置后,[index:(*list).length]内的所有元素向后移动一位
func (list *List) InsertByIndex(index, e int) {
    if index < 0 || index >= (*list).length || (*list).length+1 > 50 {
        return
    }
    //从数组尾开始向后移动
    for i := (*list).length; i >= index; i-- {
        (*list).data[i+1] = (*list).data[i]
    }
    (*list).data[index] = e
    (*list).length++
}

你可能感兴趣的:(入门题,go,github,数据结构)