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 相关文章推荐
信用卡效验程序
Oct 09 PHP
一个可以删除字符串中HTML标记的PHP函数
Oct 09 PHP
为PHP初学者的8点有效建议
Nov 20 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
php二维数组排序详解
Nov 06 PHP
PHP采集类Snoopy抓取图片实例
Jun 19 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 PHP
php使用GD2绘制几何图形示例
Feb 15 PHP
基于ThinkPHP实现的日历功能实例详解
Apr 15 PHP
浅析PHP数据导出知识点
Feb 17 PHP
PHP数组常用函数实例小结
Aug 20 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 #PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 #PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 #PHP
PHP简单实现循环链表功能示例
Nov 10 #PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
Nov 08 #PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 #PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
Nov 07 #PHP
You might like
解析php中curl_multi的应用
2013/07/17 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
2016/07/28 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
Javascript小技巧之生成html元素
2014/05/15 Javascript
JavaScript中的toUTCString()方法使用详解
2015/06/12 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
2017/03/04 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
django 常用orm操作详解
2017/09/13 Python
详解Python读取yaml文件多层菜单
2019/03/23 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
客房领班岗位职责
2015/02/11 职场文书
护士节慰问信
2015/02/15 职场文书
2015年小学开学寄语
2015/02/27 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
2016年教代会开幕词
2016/03/04 职场文书
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python
一篇文章弄懂Python中的内建函数
2021/08/07 Python
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
美元符号 $
2022/02/17 杂记
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记