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

摘要:
数组结构是一种非常常见的数据结构,它存在于大多数编程语言中。这些语言提供了可以立即使用的现成数组。为了更好地理解数组,本文将实现数组。阵列特征1.存储器中的数据紧密排列在一起。2.新元素需要打开存储空间来存储新元素。3.添加元素时,如果新元素位于其他元素的中间,则新元素后面的所有元素都需要向后移动。5.在数组中查找元素的复杂性为O。

引言

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

数组的特点

  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
}

免责声明:文章转载自《【数据结构与算法】用go语言实现数组结构及其操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇配置yum源移动端点击导航滑动展示全部选项,以为跳转页面定位到相应位置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

shell脚本(6)-shell数组

一、数组介绍 一个变量只能存一个值,现实中很多值需要存储,可以定义数组来存储一类的值。 二、基本数组 1、概念: 数组可以让用户一次性赋予多个值,需要读取数据时只需通过索引调用就可以方便读出。 2、数组语法 数组名称=(元素1 元素2 元素3) [root@localhost test20210725]# list1=(1 2 3 4 5) [root@...

vue调用组件,组件回调给data中的数组赋值,报错Invalid prop type check failed for prop value. Expecte

报错信息: 代码信息:调用一个tree组件,选择一些信息 <componentsTree ref="typeTreeComponent"   @treeCheck="treeCheck"   :isClearAllChecked=true   :defaultProps="defaultProps"> </componentsTree&...

ES6新增数组方法

1.扩展运算符可以将数组或者对象转为用逗号分隔的参数序列 let ary = [1, 2, 3]; ...ary // 1, 2, 3 console.log(...ary); // 1 2 3,相当于下面的代码 console.log(1,2,3); 2.扩展运算符可以应用于合并数组 let ary1 = [1, 2, 3]; let...

linux简单命令与Shell脚本

说明1、#表示root用户登录,$表示普通用户登录2、|符号是管道符,用于把|前的输出作为后面命令的输入3、>表示追加并覆盖的意思4、>>两个大于符号,表示追加命令1、cd命令:切换目录cd /home 进入/home目录cd ../返回上一级目录cd  ./当前目录2、ls命令:产看文件及目录ls  ./ 查看当前目录所有的文件和目录l...

CentOS安装Redis 6.0.9

什么是Redis? Redis通常被称为数据结构服务器。这意味着Redis通过一组命令提供对可变数据结构的访问,这些命令是使用带有TCP套接字和简单协议的服务器-客户端模型发送的。因此,不同的进程可以以共享的方式查询和修改相同的数据结构。 在Redis中实现的数据结构具有一些特殊属性: 即使始终为它们提供服务并将它们修改到服务器内存中,Redis也会将...

c语言进阶6-指针

指针是c语言的一个重要组成部分 是c语言的核心、精髓所在,用好指针可以在c语言编程中起到事半功倍的效果。一方面,可以提高程序的编译效率和执行速度以及实现动态的存储分配;另一方面,使用指针可使程序更灵活,全球表示各种数据结构,编写高质量的程序。 指针是c语言显著的优点之一,其使用起来十分灵活而且能提高某些程序的效率,但是如果使用不当则很容易造成系统错误。许多...