php数组和链表的区别总结


Posted in PHP onSeptember 20, 2019

PHP中数组和链表的区别

从逻辑结构来看

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

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

从内存存储来看

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

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

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

补充:

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

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

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

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

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

PHP 相关文章推荐
php中jQuery插件autocomplate的简单使用笔记
Jun 14 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
Oct 30 PHP
php调用新浪短链接API的方法
Nov 08 PHP
php中Socket创建与监听实现方法
Jan 05 PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 PHP
功能强大的php文件上传类
Aug 29 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
Nov 16 PHP
PHP面向对象程序设计组合模式与装饰模式详解
Dec 02 PHP
YII框架实现自定义第三方扩展操作示例
Apr 26 PHP
浅谈laravel框架sql中groupBy之后排序的问题
Oct 17 PHP
PHP 扩展Memcached命令用法实例总结
Jun 04 PHP
PHP copy函数使用案例代码解析
Sep 01 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数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
javascript 当前日期转化为中文的实现代码
2010/05/13 Javascript
JS实现self的resend
2010/07/22 Javascript
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
如何提高数据访问速度
2016/12/26 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
微信小程序云开发详细教程
2019/05/16 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
ECharts地图绘制和钻取简易接口详解
2019/07/12 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
详解python之协程gevent模块
2018/06/14 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
Python hmac模块使用实例解析
2019/12/24 Python
python 实现批量图片识别并翻译
2020/11/02 Python
Java的基础面试题附答案
2016/01/10 面试题
初一科学教学反思
2014/01/27 职场文书
八一建军节活动方案
2014/02/10 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
2015年共青团工作总结
2015/05/15 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
我的收音机情缘
2022/04/05 无线电