php数组和链表的区别总结


Posted in PHP onSeptember 20, 2019

PHP中数组和链表的区别

从逻辑结构来看

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

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

从内存存储来看

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

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

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

补充:

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

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

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

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

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

PHP 相关文章推荐
网友原创的PHP模板类代码
Sep 07 PHP
php strlen mb_strlen计算中英文混排字符串长度
Jul 10 PHP
关于php内存不够用的快速解决方法
Oct 26 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
PHP实现事件机制实例分析
Jun 26 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
Mar 02 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
php往mysql中批量插入数据实例教程
Dec 12 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
PHP加MySQL消息队列深入理解
Feb 27 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 ftp文件上传函数(基础版)
2010/06/03 PHP
php中拷贝构造函数、赋值运算符重载
2012/07/25 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
php数据访问之增删改查操作
2016/05/09 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
php实现websocket实时消息推送
2018/03/30 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
jquery选择器中的空格与大于号>、加号+与波浪号~的区别介绍
2016/06/24 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
JavaScript实现数值自动增加动画
2017/12/28 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
详解Python 函数参数的拆解
2020/09/02 Python
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
保安员岗位职责
2013/11/17 职场文书
个人教师自我评价范文
2013/12/02 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
人生遥控器观后感
2015/06/11 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB