数组

数组一般是内存里连续的一段存储区域,数组的结构大概如下图所示,左边存储的是索引,对应的8位数字是内存地址。
右边的memory controler也就是内存管理器可以随意的访问任何一个内存地址,也就是时间复杂度是O(1)

数组的删除和插入操作如下图所示:

所以数组的查找,插入,删除的时间复杂度分别是O(1),O(N),O(N)

链表

链表常用在减少插入和删除时间,或者不知道后面会有多少元素添加进来的时候
链表的结构就是,一个value+一个指针,如下图所示:

链表的插入操作:


链表的删除操作:

链表的查找还是需要从头指针不断的next来进行,所以链表的查找、插入、删除的时间复杂度分别是O(N),O(1),O(1)

双链表

结构与单链表十分的类似,但是多了一个向前的指针