php数组和链表的区别总结


Posted in PHP onSeptember 20, 2019

PHP中数组和链表的区别

从逻辑结构来看

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

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

从内存存储来看

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

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

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

补充:

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

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

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

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

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

PHP 相关文章推荐
Apache2 httpd.conf 中文版
Dec 06 PHP
php xml文件操作实现代码(二)
Mar 20 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
May 09 PHP
php数据库配置文件一般做法分享
Jul 07 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
Aug 09 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
Jun 23 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
php+mysql实现简单登录注册修改密码网页
Nov 30 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
Yii2结合Workerman的websocket示例详解
Sep 10 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 IPV6正则表达式验证代码
2010/02/16 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
event.srcElement+表格应用
2006/08/29 Javascript
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
jQuery - css() 方法示例详解
2014/01/16 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
2015/06/04 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
matplotlib中legend位置调整解析
2017/12/19 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
就业协议书
2014/09/12 职场文书
求职信格式范文
2015/03/19 职场文书
活动主持人开场白
2015/05/28 职场文书
公司业务员管理制度
2015/08/05 职场文书
课程设计感想范文
2015/08/11 职场文书
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang