链表面试题(简答)

1.简述链表和数组的区别

1.(数组访问数据容易,插入和删除难)数组是将元素在内存中连续存放,可以通过下标迅速访问数组中任何元素。但如果要在数组中增加或删除一个元素,需要移动大量元素。

(链表访问数据要遍历,插入删除易)链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。(增加和删除一个元素对于链表数据结构就非常简单了,只要修改元素中的指针就可以了。)

 数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);

 数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。

2.数组静态分配内存,链表动态分配内存;.数组不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。

   链表它采用动态分配内存的形式实现。需要时可以用new分配内存空间,不需要时用delete将已分配的空间释放,不会造成内存空间的浪费。
3.(静态)数组从栈中分配空间, 对于程序员方便快速,但自由度小。
          链表从堆中分配空间, 自由度大但申请管理比较麻烦

4.数组在内存中连续,链表不连续;    

原文地址:https://www.cnblogs.com/curo0119/p/8611735.html