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脚本的10个技巧(6)
Oct 09 PHP
扩展你的 PHP 之入门篇
Dec 04 PHP
php的正则处理函数总结分析
Jun 20 PHP
smarty模板局部缓存方法使用示例
Jun 17 PHP
Yii框架form表单用法实例
Dec 04 PHP
十幅图告诉你什么是PHP引用
Feb 22 PHP
php实现仿写CodeIgniter的购物车类
Jul 29 PHP
ucenter中词语过滤原理分析
Jul 13 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
关于laravel 日志写入失败问题汇总
Oct 17 PHP
详解PHP用mb_string处理windows中文字符
May 26 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
Smarty环境配置与使用入门教程
2016/05/11 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
laravel使用数据库测试注意事项
2020/04/10 PHP
js文字滚动停顿效果代码
2008/06/28 Javascript
ext form 表单提交数据的方法小结
2008/08/08 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
详解RequireJs官方使用教程
2017/10/31 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
layui的select联动实现代码
2019/09/28 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
python函数返回多个值的示例方法
2013/12/04 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
2020/12/04 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
一套英文Java笔试题面试题
2016/04/21 面试题
竞选卫生委员演讲稿
2014/04/28 职场文书
兵马俑的导游词
2015/02/02 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
小学主题班会教案
2015/08/17 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书