PHP中数组和链表的区别

从逻辑结构来看

1.、数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。

2、链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项,非常繁琐)链表必须根据next指针找到下一个元素。

从内存存储来看

1、(静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小。

2、链表从堆中分配空间, 自由度大但是申请管理比较麻烦 。

从上面的比较可以看出,如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;相反, 如果需要经常插入和删除元素就需要用链表数据结构了。

补充:

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

同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。

链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。比如:上一个元素有个指针指到下一个元素,以此类推,直到最后一个元素。

如果要访问链表中一个元素,需要从第一个元素开始,一直找到需要的元素位置。但是增加和删除一个元素对于链表数据结构就非常简单了,只要修改元素中的指针就可以了。如果应用需要经常插入和删除元素你就需要用链表数据结构了。

以上就是本次介绍的全部知识点内容,感谢大家的阅读和对脚本之家的支持。

php集合与数组的区别,php数组和链表的区别总结相关推荐

  1. c++ 将集合set的数据输出到数组中_Java集合类(容器类)简介:(摘抄)

    Java集合可用于存储数量不等的对象,并可以实现常用的数据结构(如栈.队列等待),还可以用于保存具有映射关系的关联数组.Java集合就一种容器,可以把多个对象放进容器中,Java集合可以记住容器中的对 ...

  2. php数组和链表的区别,什么是链表?链表与数组的区别?

    链表的相关知识整理 什么是链表 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时 ...

  3. 【C/C++】数组和链表的区别

    定义 数组:一组具有相同数据类型的变量的集合. 链表:一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的. 区别 逻辑结构: (1)数组在内存中连续:链表采 ...

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

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

  5. 数组和链表的区别详解

    目录 1.什么是数组和链表 2.数组和链表的区别 1.什么是数组和链表 数组介绍 数组:相同数据类型的元素按照一定的顺序排列的集合 数组本身属于引用数据类型,数组是由下标索引和data两部分组成. 数 ...

  6. (转)数组指针和指针数组的区别

    数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数 ...

  7. 【C 语言】数组与指针操作 ( 数组符号 [] 与 指针 * 符号 的 联系 与 区别 | 数组符号 [] 与 指针 * 符号 使用效果 基本等价 | 数组首地址 与 指针 本质区别 )

    文章目录 前言 一.数组符号 [] 与 指针 * 符号 使用效果 基本等价 二.数组首地址 与 指针 本质区别 前言 参考 [C 语言]指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方 ...

  8. 如何区别指针数组和数组指针?

    如何区别指针数组和数组指针? 例:下面到底哪个是数组指针,哪个是指针数组呢:  A),int *p1[10];  B),int (*p2)[10]; 答案: (1)对A来说:"[]" ...

  9. 算法与数据结构--数组和链表的区别

    最近由于在找工作,经历了一些校招面试后,感觉在数据结构和操作系统上面,还有很多的欠缺.所以今天要学习一下数据结构.还是从面试的那到题开始. 数组和链表的区别? C和C++语言中用数组处理一组数据类型相 ...

最新文章

  1. 目标形体形状轮廓重建:ICCV2019论文解析
  2. 在 Azure 上部署 Asp.NET Core Web App
  3. 【AWS 安全系列】Amazon S3 配置错误(下)
  4. ValueError: Program neato not found in path.
  5. NoBrokersAvailableError
  6. excel如何分类汇总_Excel教程:一个排序后分类汇总他弄了一天 Excel神技能!
  7. Windows Forms Programming In C# 读书笔记 - 第三章 Dialogs
  8. Hibernate查询视图返回null问题说明及解决办法
  9. mysql 视图用户_MySQL视图,存储过程,用户管理
  10. linux入门_linux入门-常用命令的使用
  11. 十七 、二叉树的概念
  12. 在mysql中修改表名的sql语句
  13. 信号与系统的基本概念与通信系统模型
  14. 微信小程序云开发简单介绍
  15. Java 买卖股票的最佳时机含手续费leetcode_714
  16. 高德地图基础教程超详细版
  17. 百位产业一线大咖齐聚上海都聊了啥?POW'ER 2020峰会尖峰48小时全程回顾
  18. python爬取饿了么评论_python爬取饿了么的实例
  19. 程序员福音 免费在线制作证件照
  20. Java岗面试:美国java程序员要求

热门文章

  1. django会话跟踪技术
  2. 【BZOJ4069】[Apio2015]巴厘岛的雕塑 按位贪心+DP
  3. Java 多线程的创建
  4. 慎用 supportedRuntime
  5. Swift - 邮件发送功能的实现
  6. go-import下划线的作用
  7. 汇编语言学习--转移指令的原理
  8. Active MQ 传输 ObjectMessage 异常
  9. python中模块导入问题(已解决)
  10. 使用app-inspector时报错connect ECONNREFUSED 127.0.0.1:8001的解决方案