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


Posted in PHP onNovember 11, 2017

本文实例讲述了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,5
5,4,2,1,head
没有值为6的节点

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

PHP 相关文章推荐
PHP运行时强制显示出错信息的代码
Apr 20 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
PHP读取文件内容后清空文件示例代码
Mar 18 PHP
PHP中实现crontab代码分享
Mar 26 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 PHP
php die()与exit()的区别实例详解
Dec 03 PHP
php获取今日开始时间和结束时间的方法
Feb 27 PHP
PHP开发的微信现金红包功能示例
Jun 29 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
如何通过PHP实现Des加密算法代码实例
May 09 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 #PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 #PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 #PHP
PHP用函数嵌入网站访问量计数器
Oct 27 #PHP
PHP实现网站访问量计数器
Oct 27 #PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
Oct 26 #PHP
详解php 使用Callable Closure强制指定回调类型
Oct 26 #PHP
You might like
基于mysql的论坛(5)
2006/10/09 PHP
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
escape unescape的php下的实现方法
2007/04/27 PHP
浅析SVN常见问题及解决方法
2013/06/21 PHP
php版本的cron定时任务执行器使用实例
2014/08/19 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
jquery maxlength使用说明
2011/09/09 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
更改Ubuntu默认python版本的两种方法python-&gt; Anaconda
2016/12/18 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
python使用锁访问共享变量实例解析
2018/02/08 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
python下载库的步骤方法
2019/10/12 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
python动态规划算法实例详解
2020/11/22 Python
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
.NET面试题:什么是反射
2016/09/30 面试题
贷款委托书范本
2014/04/08 职场文书
职业生涯规划书前言
2014/04/15 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书
python 对图片进行简单的处理
2021/06/23 Python