数组和链表 Array and Linked-List
数据结构概述 Data Structure Overview
数据结构本质上就是数据的存储方式。常见数据结构分为线性表(Linear List)和非线性表。
线性表
线性表是一种比较简单的数据结构,其中的元素是一对一的关系,每个元素只有前后两个方向。线性表包括数组、链表、队列、栈等。
非线性表
非线性表中的元素是一对多或多对一的关系,元素之间不只有前后两个方向。非线性表包括树和图等。
数组 Array
数组是一种顺序表,属于线性存储结构,存储在一段连续的内存空间。
数组的随机访问
数组是存储在一块连续的内存中,并且数组中元素数据类型相同。因此,可以实现对数组的随机访问。例如对于数组 a[10],要访问 a[i],可以直接得到其地址:首地址 + i * sizeof(int)。
这也是数组这种顺序表的一个优势:高效地访问某个元素,也即随机访问。
数组的插入
由于数组是存储在一块连续的内存中,那么对数组的插入注定是比较低效的,需要做整块数据的搬移。
数组的删除
和插入类似,删除元素也是低效的。
链表 Linked-List
数组是连