• 【数据结构与算法】用go语言实现数组结构及其操作


    引言

      数组结构是一种很常见的数据结构,并且在大部分编程语言中都存在,这些语言都提供了现成的可以立马就能使用的数组这种数据结构。为了更好的理解数组,这边文章就是来实现数组。

    数组的特点

      1.内存中数据之间紧密排列在一起。

      2.新增元素需要开辟内存空间用以存放新的元素。

      3.新增元素时候,如果新增的元素在其他元素中间,那么该新增元素的位置后面所有元素需要往后挪动。新增元素复杂度最坏情况O(n)。

          4.删除元素时候,如果删除的元素在其他元素中间,那么该删除元素的位置后面所有元素需要往前挪动。删除元素复杂度最坏情况O(n)。

      5.数组查找元素的复杂度是O(1)。

    数组实现

       1.定义数组结构(结构体)

    //数据结构 字符串 整数 实数
    type ArrayList struct{
        dataStore [] interface{} //数组的存储  模拟实现泛型
        TheDataSize int //数组的大小   TheDataSize首字母大写 外部也可以访问
    }

      2.定义数组的操作方法(接口)

    //接口
    type List interface{
        Size() int //数组大小
        Get(index int) (interface{}, error)//获取第几个元素  后面是返回的类型(泛型)
        Set(index int, newval interface{}) error //修改数据
        Insert(index int, newval interface{}) error //插入数据
        Append(newval interface{}) //追加数据 没有返回值所以不需要返回error
        Clear()   //清空数组
        Delete(index int) error //删除元素
        String() string //返回字符串
        Iterator() Iterator //接口
    }

          3.为数组开辟内存

    func NewArrayList() *ArrayList  {  //这里返回的ArrayList就是1里的定义数组结构的结构体
        list := new(ArrayList) //初始化结构体
        list.dataStore = make([]interface{}, 0, 10) //开辟空间10个
        list.TheDataSize = 0   //默认初始化大小为0
        return list
    }
  • 相关阅读:
    linux 调试利器gdb, strace, pstack, pstree, lsof
    使用Istio治理微服务入门
    JAVA多线程及线程状态转换
    Oracle
    RMA Sales Order – Stuck with “Awaiting Return Disposition”
    XP中IIS“HTTP 500
    Oracle ERP View
    WIP and COST Frequently Used Troubleshooting Scripts (Doc ID 105647.1)
    SQL -- What Tables Queries are Used to Display the Counts in the Inventory Account Periods form (INVTTGPM.fmb) (Doc ID ID 357997.1)
    oracle ebs 11i > concurrent programs –> request group –> responsibility
  • 原文地址:https://www.cnblogs.com/songgj/p/9868272.html
走看看 - 开发者的网上家园