关闭

ArrayList和LinkedList

标签: linkedlistarraylist数据链表指针
84人阅读 评论(0) 收藏 举报
分类:

单向链表由若干同类型的结点串接而成。每个结点包括两个域,即数据域和指针域。数据域保存实际数据,指针域指向下一结点。尾结点指针域为空(NULL),表示链表结束。若尾结点的指针域指向首结点,则构成环形链表。数组和链表有类似功能,具体区别如下:


数组优于链表的:

  1. 内存空间占用的少。因为链表节点会附加上一块或两块下一个节点的信息.但是数组在建立时就固定了.所以也有可能会因为建立的数组过大或不足引起内存上的问题.

  2. 数组内的数据可随机访问。但链表不具备随机访问性.这个很容易理解.数组在内存里是连续的空间.比如如果一个数组地址从100到200,且每个元素占用两个字节,那么100-200之间的任何一个偶数都是数组元素的地址.可以直接访问.链表在内存地址可能是分散的.所以必须通过上一节点中的信息找能找到下一个节点。

  3. 查找速度上。这个也是因为内存地址的连续性的问题,不罗索了。

链表优于数组的:

  1. 插入与删除的操作。如果数组的中间插入一个元素,那么这个元素后的所有元素的内存地址都要往后移动。删除的话同理.只有对数据的最后一个元素进行插入删除操作时,才比较快。链表只需要更改有必要更改的节点内的节点信息就够了。并不需要更改节点的内存地址。

  2. 内存地址的利用率方面。不管你内存里还有多少空间,如果没办法一次性给出数组所需的要空间,那就会提示内存不足,磁盘空间整理的原因之一在这里.而链表可以是分散的空间地址。

  3. 链表的扩展性比数组好。因为一个数组建立后所占用的空间大小就是固定的.如果满了就没法扩展。只能新建一个更大空间的数组.而链表不是固定的,可以很方便的扩展。
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4545次
    • 积分:210
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条