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文件
Jan 04 PHP
PHP静态新闻列表自动生成代码
Jun 14 PHP
PHP加速 eAccelerator配置和使用指南
Jun 05 PHP
跟我学Laravel之请求与输入
Oct 15 PHP
PHP屏蔽过滤指定关键字的方法
Nov 03 PHP
PHP实现抓取HTTPS内容
Dec 01 PHP
php生成rss类用法实例
Apr 14 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
PHP常用文件操作函数和简单实例分析
Jun 03 PHP
PHP实现登录注册之BootStrap表单功能
Sep 03 PHP
PHP实现字母数字混合验证码功能
Jul 11 PHP
PHP容器类的两种实现方式示例
Jul 24 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
基于curl数据采集之单页面并行采集函数get_htmls的使用
2013/04/28 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
浅析javascript闭包 实例分析
2010/12/25 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
Python发送Email方法实例
2014/08/21 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
Python tkinter label 更新方法
2018/10/11 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
python中get和post有什么区别
2020/06/19 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
使用html5制作loading图的示例
2014/04/14 HTML / CSS
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
函授毕业个人自我评价
2014/02/20 职场文书
2014年工程师工作总结
2014/11/25 职场文书
出租车拒载检讨书
2015/01/28 职场文书
黄埔军校观后感
2015/06/10 职场文书
详解JVM系列之内存模型
2021/06/10 Javascript
python在package下继续嵌套一个package
2022/04/14 Python