两种数据结构都是线性表,在排序和查找等算法中都有广泛的应用
一、各自的特点:
数组:
数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。

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

二、数组和链表的区别:
1、从逻辑结构角度来看:

数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。
链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)
2、数组元素在栈区,链表元素在堆区;

3、从内存存储角度来看:

(静态)数组从栈中分配空间, 对于程序员方便快速,但自由度小。
链表从堆中分配空间, 自由度大但申请管理比较麻烦。
数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);
数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。

数组和链表数据结构描述,各自的时间复杂度相关推荐

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

    第一题便是数据结构中的数组和链表的区别 数组(Array) 一.数组特点: 所谓数组,就是相同数据类型的元素按一定顺序排列的集合:数组的存储区间是连续的,占用内存比较大,故空间复杂的很大.但数组的二分 ...

  2. 408考研数据结构与算法之数组、链表、队列、栈知识点和算法详细教程(更新中)

    第一章:数据结构与算法概述 因为数据结构作为计算机专业的专业基础课程,是计算机考研的必考科目之一,如果打算报考计算机专业的研究生,你必须学好它. 数据结构是计算机软考.计算机等级考试等相关考试的必考内 ...

  3. 数据结构之数组、链表、栈和队列

    1.数组 1.1:概念 数组是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据.这里我们要抽取出三个跟数组相关的关键词:线性表,连续内存空间,相同数据类型:数组具有连续的内存空 ...

  4. python中链表和数组_数据结构笔记(一):数组、链表|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ (一)数组 数组(Array)是一种线性表数据结构.它用一组连续的内存空间,来存储一组具有相同类型的数据. ...

  5. 【数据结构与算法】数组与链表

    数组的定义和特性 数组(Array)是一种线性表数据结构.它用一组连续的内存空间,来存储一组具有相同类型的数据. 线性表(Linear List):数组.链表.队列.栈 非线性表:树 图 连续的内存空 ...

  6. JAVA day16、17 数据结构(栈、队列、数组、链表、红黑树)

    一.什么叫数据结构? 数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带"结构"的数据元素的集合."结构"就是指数据元素之间存在的关系,分为逻辑结构 ...

  7. 数据结构和算法详解(二)——线性表(数组、链表、栈、队列)

    一.数组 线性表:   线性表就是数据排成像一条线一样的结构.每个现行表上的数据最多只有前和后两个方向.常见的线性表结构:数组,链表.队列.栈等. 什么是数组: 数组(Array)是一种线性表数据结构 ...

  8. [数据结构] 数组与链表的优缺点和区别

    概述 数组 是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素.但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在 ...

  9. 数据结构各结构特点(数组、链表、栈、队列、树)

    目录 一.数组 二.链表 三.栈 四.队列 五.树 1.二叉树 2.二叉查找树 3.平衡二叉树(AVL树) 4.红黑树 六.总结: 1.红黑树和平衡二叉树的区别: 2.为什么有了数组和链表还要引入二叉 ...

最新文章

  1. JNI学习积累之二 ---- 数据类型映射、域描述符说明
  2. 工业级以太网交换机的应用领域有哪些?
  3. Python数据库编程pymysql
  4. 机器学习基石HOW部分(1)
  5. Servlet、Struts2以及SpringMvc中的线程安全
  6. python拖拽获取文件路径_求助tkinter模块如何获取拖拽文件的内容
  7. Sql Server 2005各大版本区别与下载
  8. Delphi 2010
  9. web打包app(h5+app)版本自动更新的实现
  10. ERP采购管理 华夏
  11. 计算机里一共录入多少个汉字,计算机操作员之汉字输入方法
  12. HTML页面调用打印机打印pdf文件
  13. 我要偷偷的学Python,然后惊呆所有人(第四天)
  14. 数学建模学习(75):全局敏感性分析Morris 方法
  15. JS 函数参数及其传递
  16. 如何实现发票信息的自动录入与查验?
  17. 梧桐树金玉满堂增额终身寿险将下架,百度开屏也懂我的资产荒焦虑
  18. mysql写了代码如何看表_mysql之单表查询__我自己敲的代码
  19. 联想小新 青春版-14笔记本电脑重装系统教程
  20. 悟空,削他!善了个哉的……

热门文章

  1. work english words
  2. nodejs 各版本下载地址
  3. PowerShell : 如何设置输出颜色,Format-Color让黑乎乎的窗口丰富起来
  4. Master in Vocab -- Day Six
  5. FPGA设计编程(二) 8-3线优先编码器与3-8线译码器
  6. 【信号与系统】3.1系统的微分方程及其求解
  7. python编辑word的格式_Python 如何对word文档(.docx)的页眉和页脚进行编辑?
  8. Oracle读取数据库中表填充,Oracle数据库中查看所有表和字段以及表注释.字段注释...
  9. 关于默认网关不可用,DNS服务器未响应问题
  10. buff系统 游戏中_请问BUFF状态