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调用三种数据库的方法(2)
Oct 09 PHP
一个用mysql_odbc和php写的serach数据库程序
Oct 09 PHP
PHP关联链接常用代码
Nov 05 PHP
php中用socket模拟http中post或者get提交数据的示例代码
Aug 08 PHP
PHP基础知识介绍
Sep 17 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
PHP中抽象类、接口的区别与选择分析
Mar 29 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
PHP实现SMTP邮件的发送实例
Sep 27 PHP
浅谈php常用的7大框架的优缺点
Jul 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初学者最感迷茫的问题小结
2010/03/27 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
php中Socket创建与监听实现方法
2015/01/05 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
类之Prototype.js学习
2007/06/13 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
vue实现引入本地json的方法分析
2018/07/12 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
2018/08/20 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
基于Pandas读取csv文件Error的总结
2018/06/15 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
深入了解Python 变量作用域
2020/07/24 Python
期末总结的个人自我评价
2013/11/02 职场文书
安全教育心得体会
2013/12/29 职场文书
实习老师离校感言
2014/02/03 职场文书
党员实事承诺书
2014/03/26 职场文书
小学生环保标语
2014/06/13 职场文书
车间质检员岗位职责
2015/04/08 职场文书
2015年幼儿园个人工作总结
2015/04/25 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书
合理缓解职场压力,让你随时保持最佳状态!
2019/06/21 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python