当前位置: 首页 > 面试题库 >

请你回答一下Array&List, 数组和链表的区别

岳晟
2023-03-14
本文向大家介绍请你回答一下Array&List, 数组和链表的区别相关面试题,主要包含被问及请你回答一下Array&List, 数组和链表的区别时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

数组的特点:

数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。数组的插入数据和删除数据效率低,插入数据时,这个位置后面的数据在内存中都要向后移。删除数据时,这个数据后面的数据都要往前移动。但数组的随机读取效率很高。因为数组是连续的,知道每一个数据的内存地址,可以直接找到给地址的数据。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。数组需要预留空间,在使用前要先申请占内存的大小,可能会浪费内存空间。并且数组不利于扩展,数组定义的空间不够时要重新定义数组。

 

链表的特点:

链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。比如:上一个元素有个指针指到下一个元素,以此类推,直到最后一个元素。如果要访问链表中一个元素,需要从第一个元素开始,一直找到需要的元素位置。但是增加和删除一个元素对于链表数据结构就非常简单了,只要修改元素中的指针就可以了。如果应用需要经常插入和删除元素你就需要用链表数据结构了。不指定大小,扩展方便。链表大小不用定义,数据随意增删。

 

各自的优缺点

数组的优点:

\1. 随机访问性强

\2. 查找速度快

数组的缺点:

\1. 插入和删除效率低

\2. 可能浪费内存

\3. 内存空间要求高,必须有足够的连续内存空间。

\4. 数组大小固定,不能动态拓展

 

链表的优点:

\1. 插入删除速度快

\2. 内存利用率高,不会浪费内存

\3. 大小没有固定,拓展很灵活。

链表的缺点:

不能随机查找,必须从第一个开始遍历,查找效率低

 类似资料:
  • 本文向大家介绍请你回答一下软链接和硬链接区别相关面试题,主要包含被问及请你回答一下软链接和硬链接区别时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 为了解决文件共享问题,Linux引入了软链接和硬链接。除了为Linux解决文件共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。若1个inode号对应多个文件名,则为硬链接,即硬链接就是同一个文件使用了不同的别名,使用ln创建。若文

  • 本文向大家介绍请你回答一下mongodb和redis的区别相关面试题,主要包含被问及请你回答一下mongodb和redis的区别时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 内存管理机制上:Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。MongoDB 数据存在内存,由 linux系统 mmap 实现,当内存不够时,只将热点数据放入内存,其

  • 本文向大家介绍请你回答一下fork和vfork的区别相关面试题,主要包含被问及请你回答一下fork和vfork的区别时的应答技巧和注意事项,需要的朋友参考一下 参考回答: fork的基础知识: fork:创建一个和当前进程映像一样的进程可以通过fork( )系统调用: #include <sys/types.h> #include <unistd.h> pid_t fork(void); 成功调用

  • 本文向大家介绍请回答一下数组和指针的区别 ?相关面试题,主要包含被问及请回答一下数组和指针的区别 ?时的应答技巧和注意事项,需要的朋友参考一下 指针和数组的主要区别如下: 指针 数组 保存数据的地址 保存数据 间接访问数据,首先获得指针的内容,然后将其作为地址,从该地址中提取数据 直接访问数据, 通常用于动态的数据结构 通常用于固定数目且数据类型相同的元素 通过Malloc分配内存,free释放内

  • 本文向大家介绍请你回答一下STL里resize和reserve的区别?相关面试题,主要包含被问及请你回答一下STL里resize和reserve的区别?时的应答技巧和注意事项,需要的朋友参考一下 resize():改变当前容器内含有元素的数量(size()),eg: vector v; v.resize(len);v的size变为len,如果原来v的size小于len,那么容器新增(len-siz

  • 本文向大家介绍请你回答一下git中Merge和rebase区别?相关面试题,主要包含被问及请你回答一下git中Merge和rebase区别?时的应答技巧和注意事项,需要的朋友参考一下 Merge会自动根据两个分支的共同祖先和两个分支的最新提交 进行一个三方合并,然后将合并中修改的内容生成一个新的 commit,即merge合并两个分支并生成一个新的提交,并且仍然后保存原来分支的commit记录 R