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 相关文章推荐
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
PHPMailer安装方法及简单实例
Nov 25 PHP
php XMLWriter类的简单示例代码(RSS输出)
Sep 30 PHP
几个有用的php字符串过滤,转换函数代码
May 01 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
php随机显示图片的简单示例
Feb 15 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
Nov 15 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
CI框架网页缓存简单用法分析
Dec 26 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
常见JS验证脚本汇总
2015/12/01 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
详解webpack babel的配置
2018/01/09 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
浅谈Python中的模块
2020/06/10 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
HTML5实现签到 功能
2018/10/09 HTML / CSS
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
实习生个人的自我评价
2013/12/08 职场文书
女方婚礼新郎答谢词
2014/01/11 职场文书
集体婚礼证婚词
2014/01/13 职场文书
图书室管理制度
2014/01/19 职场文书
物控部经理职务说明书
2014/02/25 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
开除通知书范本
2015/04/25 职场文书
导游词之太原天龙山
2020/01/02 职场文书
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫