php数组和链表的区别总结


Posted in PHP onSeptember 20, 2019

PHP中数组和链表的区别

从逻辑结构来看

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

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

从内存存储来看

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

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

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

补充:

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

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

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

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

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

PHP 相关文章推荐
PHP读取MySQL数据代码
Jun 05 PHP
PHP 第二节 数据类型之字符串类型
Apr 28 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
Jun 20 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
从PHP的源码中深入了解stdClass类
Apr 18 PHP
PHP跨平台获取服务器IP地址自定义函数分享
Dec 29 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
基于php实现随机合并数组并排序(原排序)
Nov 26 PHP
详谈php静态方法及普通方法的区别
Oct 04 PHP
PHP中for循环与foreach的区别
Mar 06 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
Oct 15 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/08 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
初识php MVC
2014/09/10 PHP
ThinkPHP中关联查询实例
2014/12/02 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
JSON辅助格式化处理方法
2013/03/26 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
自学python用什么系统好
2020/06/23 Python
python代码能做成软件吗
2020/07/24 Python
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
12岁生日感言
2014/01/21 职场文书
交通事故代理词范文
2015/05/23 职场文书
新人入职感言
2015/07/31 职场文书