美文网首页
##数据结构之数组和链表的区别

##数据结构之数组和链表的区别

作者: 枫叶无处漂泊 | 来源:发表于2019-02-23 23:13 被阅读0次

从以下几个方面来解释链表和数组的区别

一、存储数据

链表和数组都可用来存放指定的数据类型。

二、物理存储

  • 数组:
    数组从栈中分配空间, 对于程序员方便快速,但是自由度小
  • 链表:
    链表从堆中分配空间, 自由度大但是申请管理比较麻烦.

三、内存存储形势

  • 数组:连续存储
    数组是连续存储的,在操作数组中的数据时就可以根据离首地址的偏移量直接存取相应位置上的数据,但是如果要在数据组中任意位置上插入一个元素,就需要先把后面的元素集体向后移一位为其空出存储空间
  • 链表:离散存储
    链表是离散存储的,所以在插入一个数据时只要申请一片新空间,然后将其中的连接关系做一个修改就可以,但是显然在链表上查找一个数据时就要逐个遍历了。

四、查询数据

  • 数组:查询快
    数组要求是一块连续的内存空间来存储,这就要求在物理上这一片空间是连续的,每个元素都有指定的索引index指向内存地址,因此查询的时候,可根据index快速找到对应地址存储的信息,此为查询快.
  • 链表:查询慢
    链表由于没有像数组那样的索引,因此,查询的时候需要遍历整个链表所有元素的内存地址,然后才能确定目标元素,此为查询慢。

五、增删数据

  • 数组:增删数据慢
    数组进行增删的时候,就必须将目标位置后的所有元素都整体移动,因此就比较耗时,此为增删慢.
  • 链表:增删数据快
    链表在物理上是动态地分配储存空间,不要求连续性,但是要求逻辑上的连续。它需要存储每个元素在内存中的地址,以及指向下一个节点的指针,然后像链条一样把各元素链起来,保证了在逻辑上的连续性。
    例如:
    • 单链表:
      每个元素除了存储本身的值外,还存储了前驱的引用,也就是存储了前驱所在的内存地址信息。
    • 双链表:
      就是不仅存储了前驱的引用还存储了后继的引用.

总结

数组和链表各有优缺点。具体使用时要根据具体情况选择。当查找数据操作比较多时最好用数组;当对数据集中的数据进行添加或删除比较多时最好选择链表。`

相关文章

  • java基础

    HashMap 数据结构 数组 ArrayList和LinkedList的区别实值数组和链表的区别 用连续的存储单...

  • HashMap 1.7 和1.8区别

    一、数据结构区别 HashMap 1.7 使用数组+链表HashMap 1.8 使用Node数组+链表+红黑树(当...

  • Java常用类库与技巧-集合

    一 数据结构常见问题 数组和链表的区别;链表的操作,如反转,链表环路检测,双向链表,循环链表相关操作;队列,栈的应...

  • 「数据结构与算法」笔记

    一 数组和链表的区别 数据结构在通过索引进行查询时效率比较高 ,而对于数组插入和删除操作,则效率会比较低。 数组优...

  • ArrayList和LinkedList的区别

    大致的区别: ArrayList是实现了基于动态数组的数据结构, LinkedList基于链表的数据结构 对于随机...

  • 猫眼电影----电话面试(前端)

    1、为什么0.2 + 0.1 = 0.30000001? 2、有哪些数据结构? 3、队列和栈的区别?数组与链表的区...

  • ##数据结构之数组和链表的区别

    从以下几个方面来解释链表和数组的区别 一、存储数据 链表和数组都可用来存放指定的数据类型。 二、物理存储 数组:数...

  • 链表(Linked List)

    什么是链表? 通过指针或者引用将一系列数据节点串起来的数据结构称为链表,链表数据结构与数组最明显的区别就是它在内存...

  • 大数据(架构师)面试系列(5)

    1.数组与链表的区别是什么? 线性表--数组和链表的区别链表和数组的区别在哪里? 2.Scala函数式编程的特点?...

  • 【必知必会】HashMap 面试题

    @[TOC] 1:HashMap 的数据结构? A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。...

网友评论

      本文标题:##数据结构之数组和链表的区别

      本文链接:https://www.haomeiwen.com/subject/vnbmyqtx.html