一、数组
数组所记录的数据存在于一个内存中,当我们需要查询数组中的一个数据时,只需要拿到数组的地址值,再通过索引就可以找到对应数据,所以数组的查询效率高。
但当我们要新增或者删除一个数组元素时,就需要改动被删或增元素后的所有元素的索引值,所以数组增删效率低。
二、链表
链表则恰恰相反,链表每个元素都会开辟一个独立的内存,每个节点中存储一个元素的数据和下一个节点的地址值,当我们在做新增或者删除操作时只需要修改被增和删元素相邻的地址值,所以链表的增删效率高。
但是如果我们需要查询一个元素时,只能通过头节点挨个往后找,知道找到我们想要的元素所以链表查询效率低。
当然也可以通过双向链表增加查询效率。
双向链表即在一个节点内存中存储前一个节点地址、元素数据、后一个节点地址。