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 中英文语言转换类
Sep 07 PHP
使用PHP实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
Oct 09 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 PHP
php实现模拟登陆方正教务系统抓取课表
May 19 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
Sep 29 PHP
Zend Framework教程之模型Model基本规则和使用方法
Mar 04 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
May 13 PHP
php封装的page分页类完整实例代码
Feb 01 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
php中的常用魔术方法总结
2013/08/02 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
python中subprocess批量执行linux命令
2018/04/27 Python
python 常用的基础函数
2018/07/10 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
python删除某个目录文件夹的方法
2020/05/26 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
Envie de Fraise意大利:法国网上推出的孕妇装品牌
2020/10/18 全球购物
内部类的定义、种类以及优点
2013/10/16 面试题
父母对孩子说的话
2014/04/12 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
离婚承诺书格式范文
2015/05/04 职场文书
离婚起诉书范本
2015/05/18 职场文书
学术研讨会主持词
2015/07/04 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
Python机器学习应用之基于线性判别模型的分类篇详解
2022/01/18 Python
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python
德生2P3收音机开箱评测
2022/04/30 无线电