• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP实现双链表删除与插入节点的方法示例

    本文实例讲述了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程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • php递归调用删除数组空值元素的方法
    • PHP递归删除多维数组中的某个值
    • 实现php删除链表中重复的结点
    • 利用PHP实现递归删除链表元素的方法示例
    上一篇:PHP实现基于栈的后缀表达式求值功能
    下一篇:PHP+AJAX 投票器功能
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP实现双链表删除与插入节点的方法示例 PHP,实现,双链,表,删除,与,