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
    }
  • 相关阅读:
    js-jQuery对象与dom对象相互转换
    django模板{%for%}中的forloop的应用
    ubuntu MySQL数据库输入中文乱码 解决方案
    多线程下的神奇的IOCP
    类库服务寄宿到WebHost
    细说Asp.Net WebAPI消息处理管道
    项目发布Debug和Release版的区别
    linux yum命令详解
    Linux系统如何查看版本信息
    Linux查看物理CPU个数、核数、逻辑CPU个数
  • 原文地址:https://www.cnblogs.com/songgj/p/9868272.html
Copyright © 2011-2022 走看看