php数组和链表的区别总结


Posted in PHP onSeptember 20, 2019

PHP中数组和链表的区别

从逻辑结构来看

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

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

从内存存储来看

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

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

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

补充:

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

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

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

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

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

PHP 相关文章推荐
PHP 高手之路(一)
Oct 09 PHP
php桌面中心(三) 修改数据库
Mar 11 PHP
Smarty安装配置方法
Apr 10 PHP
PHP 危险函数全解析
Sep 09 PHP
PHP 数组遍历方法大全(foreach,list,each)
Jun 30 PHP
LotusPhp笔记之:Cookie组件的使用详解
May 06 PHP
解析php通过cookies获取远程网页的指定代码
Jun 25 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
隐性调用php程序的方法
Jun 13 PHP
nginx+thinkphp下解决不支持pathinfo模式
Jul 01 PHP
php通过两层过滤获取留言内容的方法
Jul 11 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
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
用Javascript读取中文COOKIE的解决办法
2007/02/15 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
2013/02/04 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
基于vue实现圆形菜单栏组件
2019/07/05 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
python中的多线程实例教程
2014/08/27 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
校园达人秀策划书
2014/01/12 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
2015年读书月活动总结
2015/03/26 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
Python语言中的数据类型-序列
2022/02/24 Python
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android