当前位置:首页 > 日记 > 正文

PHP实现双链表删除与插入节点的方法示例

PHP实现双链表删除与插入节点的方法示例

本文实例讲述了PHP实现双链表删除与插入节点的方法。分享给大家供大家参考,具体如下:

概述:

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。

实现代码:

<?php class node{  public $prev;  public $next;  public $data;  public function __construct($data,$prev=null,$next=null){    $this->data=$data;    $this->prev=$prev;    $this->next=$next;  }}class doubleLinkList{  private $head;  public function __construct()  {    $this->head=new node("head",null,null);  }  //插入节点  public function insertLink($data){    $p=new node($data,null,null);    $q=$this->head->next;    $r=$this->head;    while($q){      if($q->data>$data){        $q->prev->next=$p;        $p->prev=$q->prev;        $p->next=$q;        $q->prev=$p;      }else{      $r=$q;$q=$q->next;      }    }    if($q==null){      $r->next=$p;      $p->prev=$r;    }  }  //从头输出节点  public function printFromFront(){    $p=$this->head->next;    $string="";    while($p){    $string.=$string?",":"";    $string.=$p->data;    $p=$p->next;    }    echo $string."<br>";  }  //从尾输出节点  public function printFromEnd(){    $p=$this->head->next;    $r=$this->head;    while($p){    $r=$p;$p=$p->next;    }    $string="";    while($r){      $string.=$string?",":"";      $string.=$r->data;      $r=$r->prev;    }    echo $string."<br>";  }  public function delLink($data){    $p=$this->head->next;    if(!$p)    return;    while($p){      if($p->data==$data)      {        $p->next->prev=$p->prev;        $p->prev->next=$p->next;        unset($p);        return;      }      else{        $p=$p->next;      }    }    if($p==null)    echo "没有值为{$data}的节点";  }}$link=new doubleLinkList();$link->insertLink(1);$link->insertLink(2);$link->insertLink(3);$link->insertLink(4);$link->insertLink(5);$link->delLink(3);$link->printFromFront();$link->printFromEnd();$link->delLink(6);

运行结果:

1,2,4,55,4,2,1,head没有值为6的节点

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》

希望本文所述对大家PHP程序设计有所帮助。

相关文章

jQuery实现节点的追加、替换、删除

jQuery实现节点的追加、替换、删除

删除,追加,节点,替换,示例,本文实例讲述了jQuery实现节点的追加、替换、删除、复制功能。分享给大家供大家参考,具体如下:一、追加节点分为父子和兄弟节点的追加。每个追加节点的方法又分主动追加和被动追加。//1、父子关系的添加//主动添加$…

详解webpack打包vue时提取css

详解webpack打包vue时提取css

详解,电脑软件,vue,webpack,css,webpack打包vue项目的时候默认会把vue里的css打包到页面上。webpack.config.js里的plugins加上以下配置new webpack.LoaderOptionsPlugin({ test:/\.vue$/, options: { vue: { loaders: { …

win7怎么设置屏幕保护时间

win7怎么设置屏幕保护时间

屏幕保护,设置,时间设置,电脑软件,时间,Windows 7电脑中怎么设置屏幕保护时间?虽然屏幕保护时间的设置比较简单,不过对于一些不熟悉电脑的朋友来说,设置屏幕保护时间还是有些困难。因此,本文通过图文并茂的方式,来详细介绍win7中设置屏幕保护设…

JS去除字符串中空格的方法

JS去除字符串中空格的方法

方法,字符串,空格,电脑软件,JS,本文实例讲述了JS去除字符串中空格的方法。分享给大家供大家参考,具体如下:去掉字符串中的所有空格,不仅仅包含前后空格:text = text.replace(/\s/ig,'');去掉前后空格:第一种方法:使用trim()function Trim(m){ …

Win7安装Java环境

Win7安装Java环境

环境安装,安装,电脑软件,环境,Java,1、下载JDK & 安装软件下载后安装JDK,会自带安装JRE,所以不用再去下载安装JRE。我这里采用默认安装,默认安装路径C:Program FilesJavaJDK下载:JAVA官网2、配置JAVA环境&ldquo;计算机&rdquo;右击&ldquo;属性&r…

PHP中include和require的区别实例

PHP中include和require的区别实例

实例分析,区别,电脑软件,PHP,include,先编辑command.php文件echo 'hello'.PHP_EOL;然后编辑console.php文件for($i=1;$i<=3;++$i){require 'command1.php';}原本想要包含并执行这个echo,没想到写错了文件名,如果是require,会报出这样的错…

win7如何打开注册表 注册表编辑器

win7如何打开注册表 注册表编辑器

注册表编辑器,打开注册表,电脑软件,有时候我们在使用电脑的过程中,需要打开注册表,但是又不清楚如何打开注册表编辑器,让一些电脑用户很头疼,对于电脑高手来说,打开注册表编辑器再简单不过,下面我们以Win7系统为例来看看具体注册表编辑器如何打开…

PHP中模糊查询并关联三个select框

PHP中模糊查询并关联三个select框

模糊,查询,电脑软件,PHP,select,1.在php中我们经常用到下拉框,并相互关联,如果下拉框的option非常多,那么我们就要用到模糊搜索功能,那么怎么做呢?在此功能中,走了弯路,最好不要关联两个select的id值后select属性选中,并不可修改。再次选择的时候去…

linux磁盘修复相关命令

linux磁盘修复相关命令

命令,磁盘,电脑软件,linux,  badblocks功能说明:检查磁盘装置中损坏的区块。语  法:badblocks [-svw][-b ][-o ][磁盘装置][磁盘区块数][启始区块]补充说明:执行指令时须指定所要检查的磁盘装置,及此装置的磁盘区块数。参  数:-b 指定磁盘…

js阻止移动端页面滚动的两种方法

js阻止移动端页面滚动的两种方法

方法,移动端,两种,页面,电脑软件,方法一: $(document).on('touchmove',function(e){ e.preventDefault(); })方法二:position: fixed;top:0;left: 0;以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望…

yy怎么截图 yy截图快捷键

yy怎么截图 yy截图快捷键

快捷键,截图,电脑软件,yy,许多游戏玩家都会使用yy进行聊天,而在聊天中免不了会用到截图,但是yy在默认的情况下是没有yy截图快捷键的,百度一下也有很多相关yy怎么截图的文章,都是老版本的,本文小编为大家介绍如何在最新的yy6.27版本中设置截图快…

将DedeCMS的data目录迁移到上级目

将DedeCMS的data目录迁移到上级目

方法,目录,上级,电脑软件,DedeCMS,dedecms是国内开源CMS的领先品牌,目前程序安装量已达七十万,超过六成的站点正在使用织梦CMS。而dedecms根目录下的data目录是系统缓存和配置文件的目录,存在着安全隐患,本文介绍将DedeCMS根目录下的data目录迁…