重温一遍数据结构之顺序存储结构(golang版)

重温一遍数据结构之顺序存储结构(golang版),第1张

概述目的 因为最近工作中碰到了一些关于数据结构的问题,发现有些生疏了,所以想重新自己再理一遍,就当是给自己的记录,之所以用golang主要也是因为对goalng比较感兴趣,写起来也比较顺手。 本意也不是想分享关于什么是数据结构,因为这种概念性的东西没有什么太大意义,其实最重要的是让自己能看懂自己写了些什么,但是代码中写了非常详细的注释,所以基本都是以代码为主 顺序存储结构 顺序存储结构是线性表中的一种 目的

因为最近工作中碰到了一些关于数据结构的问题,发现有些生疏了,所以想重新自己再理一遍,就当是给自己的记录,之所以用golang主要也是因为对goalng比较感兴趣,写起来也比较顺手。
本意也不是想分享关于什么是数据结构,因为这种概念性的东西没有什么太大意义,其实最重要的是让自己能看懂自己写了些什么,但是代码中写了非常详细的注释,所以基本都是以代码为主

顺序存储结构

顺序存储结构是线性表中的一种,以下代码是线性表中的顺序存储结构的表述,基本略去了些容错和美观的考虑,还是以实现功能为主

package main//线性表中的顺序存储结构import (    "fmt")// 线性表中存储的数据类型type Elem inttype SqList struct {    //最大长度    maxsize int    // 当前长度    length int    //保存数据    data   []Elem}//初始化func New(maxsize int) *SqList {    return &SqList{maxsize: maxsize,data: make([]Elem,maxsize)}}//检查线性表是否为空func (List *SqList) IsEmpty() bool {    return 0 == List.length}//判断线性表是否已满func (List *SqList) IsFull() bool {    return List.length == List.maxsize}//在i个位置之前插入新的元素e,复杂度为O(n)func (List *SqList) Insert(i int,e Elem) bool {    if i < 1 || i > List.length {        fmt.Println("pls check i:",i)        return false    }    for k := List.length; k > i-1; k-- {        List.data[k] = List.data[k-1]    }    List.data[i-1] = e    List.length++    return true}//删除位置为i的元素,复杂度为O(n)func (List *SqList) Del(i int) bool {    if i < 1 || i > List.length {            fmt.Println("pls check i:",i)        return false    }    for k := i - 1; k < List.length-1; k++ {        List.data[k] = List.data[k+1]    }    List.data[List.length-1] = 0    List.length--    return true}//获取第i个位置的元素,复杂度为O(1)func (List SqList) GetElem(i int) Elem{    if i < 1 || i > List.length {        fmt.Println("pls check i:",i)        return -1    }    return List.data[i-1]}//追加一个元素func (List *SqList) append(e Elem) bool {    if List.IsFull() {        fmt.Println("List is fulle")        return false    }    List.data[List.length] = e    List.length++    return true}func main() {    sq := New(10)    sq.append(99)    sq.append(999)    sq.append(9999)    sq.append(99999)    fmt.Println(sq)    sq.Insert(4,888)    fmt.Println(sq)    //fmt.Println(r)    sq.Del(2)    fmt.Println(sq)    fmt.Println(sq.GetElem(3))}
总结

以上是内存溢出为你收集整理的重温一遍数据结构之顺序存储结构(golang版)全部内容,希望文章能够帮你解决重温一遍数据结构之顺序存储结构(golang版)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1273216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存