数组的特点
1、在存储的方式上面数组在内存中是连续的,相邻的可以通过下标的方式进行访问。
2、在存储的空间长度上面有区别,数组在创建的时候就固定大小,在使用的时候大多数情况要对数组进行扩容,对于扩容的倍数是根据存储数据的大小不同而不同,但是一般情况下是按照原来的2倍进行扩容。
3、在使用的时候我们能通过下标的方式直接访问数组之中的每个数据访问的速度就是O(1)非常的方便。
4、在使用数组的插入和删除操作时要对数组的其他元素进行移动,时间的复杂度是O(N)。
5、在空间浮渣度上数组的空间复杂度一般比链表的复杂度小。
链表的特点
1、链表在我们的现象之中是连续存储的,但是在真实的物理空间上面他是不连续的是通过链表之中的指针进行指向的。
2、链表在空间的长度上面就和数组不一样了,链表的扩容是使用malloc扩容出一个个的节点,有多少扩多少。
3、对单向链表来说每次的访问都必须要对前面的每个节点都进行访问,通过前面一个节点的指针的指向去进行数据的访问。
4、在插入和删除操作时需要找到指针对指针的指向进行修改即可,复杂度是O(1)。
5、在空间浮渣度上数组的空间复杂度一般比链表的复杂度要小一点,因为链表需要存储链表指针的原因。