数据结构与算法 线性表-数组

概念解释

**数组(Array)**大概是最简单,也是最常用的数据结构了。其他数据结构,比如栈和队列都是由数组衍生出来的。

img

每一个数组元素的位置由数字编号,称为下标或者索引(index)。大多数编程语言的数组第一个元素的下标是0。

根据维度区分,有2种不同的数组:

  • 一维数组
  • 多维数组(数组的元素为数组)

数组的基本操作

  • Insert - 在某个索引处插入元素
  • Get - 读取某个索引处的元素
  • Delete - 删除某个索引处的元素
  • Size - 获取数组的长度

访问元素

数组元素被存储在连续的内存空间中,这意味着计算数组元素的内存地址非常容易。给定数组内存地址(首元素内存地址)和某个元素的索引,计算得到该元素的内存地址,从而直接访问该元素。

数组索引的本质是地址偏移量(),首个元素的地址偏移量是0,故索引 0代表数组的第一个元素位置。

数组元素的内存地址计算

插入元素

数组元素在内存中是“紧挨着的”,它们之间没有空间再存放任何数据。如果想在数组中间插入一个元素,则需要将该元素之后的所有元素都向后移动一位,之后再把元素赋值给该索引这会导致数组尾部元素“丢失”。

img

删除元素

删除索引 i 处的元素,则需要把索引 i 之后的元素都向前移动一位。

数组删除元素示例

数组与链表的区别、优劣

img