php数组和链表的区别总结


Posted in PHP onSeptember 20, 2019

PHP中数组和链表的区别

从逻辑结构来看

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

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

从内存存储来看

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

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

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

补充:

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

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

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

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

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

PHP 相关文章推荐
用PHP实现多级树型菜单
Oct 09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续二
Apr 03 PHP
php根据年月获取季度的方法
Mar 31 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
Jun 07 PHP
利用PHP实现开心消消乐的算法示例
Oct 12 PHP
PHP children()函数讲解
Feb 03 PHP
Laravel框架实现简单的学生信息管理平台案例
May 07 PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
Mar 26 PHP
php输出反斜杠的实例方法
Sep 19 #PHP
php实现session共享的实例方法
Sep 19 #PHP
php进行md5加密简单实例方法
Sep 19 #PHP
php解决安全问题的方法实例
Sep 19 #PHP
PHP中16个高危函数整理
Sep 19 #PHP
php实例化一个类的具体方法
Sep 19 #PHP
PHP递归统计系统中代码行数
Sep 19 #PHP
You might like
解析PHP可变函数的经典用法
2013/06/20 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
10个简化PHP开发的工具
2014/12/25 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
基于jquery的手风琴图片展示效果实现方法
2014/12/16 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
小程序云开发实战小结
2018/10/25 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
2018/05/18 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
大学生自荐书范文
2013/12/10 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
争先创优演讲稿
2014/09/15 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
Python3.10的一些新特性原理分析
2021/09/15 Python
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python
Nginx如何配置根据路径转发详解
2022/07/23 Servers