zoukankan      html  css  js  c++  java
  • 【数据结构与算法】用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
    }
  • 相关阅读:
    设置WebSphere字符集参数
    防SQL注入
    改变radio/checkbox默认样式
    数据完整性约束错误
    Java项目多数据源配置
    No row with the given identifier exists:错误另解
    ICTCLAS20160405分词系统调试过程
    centos7 忘记root密码
    java之Junit
    javaweb之登录
  • 原文地址:https://www.cnblogs.com/songgj/p/9868272.html
Copyright © 2011-2022 走看看