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音乐采集(部分代码)
Feb 14 PHP
php下封装较好的数字分页方法
Nov 23 PHP
php全局变量和类配合使用深刻理解
Jun 05 PHP
PHP版 汉字转码的实现详解
Jun 09 PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 PHP
zf框架的registry(注册表)使用示例
Mar 13 PHP
dedecms中使用php语句指南
Nov 13 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
PHP加密解密字符串汇总
Apr 26 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
基于PHP实现生成随机水印图片
Dec 09 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
人族 Terran 基本策略
2020/03/14 星际争霸
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
php str_getcsv把字符串解析为数组的实现方法
2017/04/05 PHP
动态加载js的几种方法
2006/10/23 Javascript
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
详解参数传递四种形式
2015/07/21 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
python抓取网页图片示例(python爬虫)
2014/04/27 Python
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
在Windows8上的搭建Python和Django环境
2014/07/03 Python
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
小白入门篇使用Python搭建点击率预估模型
2018/10/12 Python
Python中修改字符串的四种方法
2018/11/02 Python
详解python之heapq模块及排序操作
2019/04/04 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
python如何进入交互模式
2020/07/06 Python
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
如何开发安全的AJAX应用
2014/03/26 面试题
物流专业毕业生推荐信范文
2013/11/18 职场文书
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
合作意向书模板
2014/03/31 职场文书
不错的求职信范文
2014/07/20 职场文书