实现php删除链表中重复的结点


Posted in PHP onSeptember 27, 2018

删除链表中重复的结点:

定义两个指针pre和current

两个指针同时往后移动,current指针如果与后一个结点值相同,就独自往前走直到没有相等的

pre指针next直接指向current指针的后一个,把相同的都跳过

pre=linkList
current=linkList
while current!=null
  if current->data==current->next->data
    value=current->data
    while value==current->next->data
      current=current->next
    pre->next=current->next
  pre=pre->next
  current=current->next
return linkList
<?php
class Node{
    public $data;
    public $next;
    public function __construct($data=""){
        $this->data=$data;
    }  
}
//构造一个带重复的链表
$linkList=new Node();
$linkList->next=null;
$temp=$linkList;
$node1=new Node(2);
$temp->next=$node1;
$temp=$node1;
$node2=new Node(2);
$temp->next=$node2;
$temp=$node2;
$node3=new Node(3);
$temp->next=$node3;
$temp=$node3;
$node4=new Node(3);
$temp->next=$node4;
$temp=$node4;
$node5=new Node(4);
$temp->next=$node5;
$node5->next=null;
function deleteDuplication($pHead){
    $pre=$pHead->next;//当前都指向第一个结点
    $current=$pHead->next;//当前结点是第一个结点
    while($current!=null){
        //如果当前结点值和当前结点的下一个结点值相同
        if($current->next!=null && $current->data==$current->next->data){
            //保存当前结点值
            $val=$current->data;
            //当前结点往后移直到和下一个结点值不相等
            while($current->next!=null && $val==$current->next->data){
                $current=$current->next;
            }  
            //前一个指针next直接指向当前结点的next
            $pre->next=$current->next;
        }  
        //两个指针同时后移
        $pre=$pre->next;
        $current=$current->next;
    }
    return $pHead;
}
var_dump($linkList);
$result=deleteDuplication($linkList);
var_dump($result);
object(Node)#1 (2) {
 ["data"]=>
 string(0) ""
 ["next"]=>
 object(Node)#2 (2) {
  ["data"]=>
  int(2)
  ["next"]=>
  object(Node)#3 (2) {
   ["data"]=>
   int(2)
   ["next"]=>
   object(Node)#4 (2) {
    ["data"]=>
    int(3)
    ["next"]=>
    object(Node)#5 (2) {
     ["data"]=>
     int(3)
     ["next"]=>
     object(Node)#6 (2) {
      ["data"]=>
      int(4)
      ["next"]=>
      NULL
     }
    }
   }
  }
 }
}
object(Node)#1 (2) {
 ["data"]=>
 string(0) ""
 ["next"]=>
 object(Node)#2 (2) {
  ["data"]=>
  int(2)
  ["next"]=>
  object(Node)#4 (2) {
   ["data"]=>
   int(3)
   ["next"]=>
   object(Node)#6 (2) {
    ["data"]=>
    int(4)
    ["next"]=>
    NULL
   }
  }
 }
}

以上就是实现php删除链表中重复的结点的全部内容和代码,感谢大家对三水点靠木的支持。

PHP 相关文章推荐
提问的智慧(2)
Oct 09 PHP
php 数组的一个悲剧?
May 11 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
Jul 12 PHP
解析关于wamp启动是80端口被占用的问题
Jun 21 PHP
php缓冲 output_buffering和ob_start使用介绍
Jan 30 PHP
PHP动态编译出现Cannot find autoconf的解决方法
Nov 05 PHP
PHP获取Exif缩略图的方法
Jul 13 PHP
php ajax实现文件上传进度条
Mar 29 PHP
thinkphp分页实现效果
Oct 13 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
Jul 13 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
laravel 框架执行流程与原理简单分析
Feb 01 PHP
浅析php如何实现爬取数据原理
Sep 27 #PHP
Laravel源码解析之路由的使用和示例详解
Sep 27 #PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 #PHP
PHP实现SMTP邮件的发送实例
Sep 27 #PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 #PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
Sep 26 #PHP
多个Laravel项目如何共用migrations详解
Sep 25 #PHP
You might like
php下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
vue cli 全面解析
2018/02/28 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
Python实现SMTP发送邮件详细教程
2021/03/02 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
EJB3推出JPA的原因
2013/10/16 面试题
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
工厂厂长的职责
2013/12/12 职场文书
产品售后服务承诺书
2014/05/21 职场文书
求职信怎么写范文
2014/05/26 职场文书
自主招生英文自荐信
2015/03/25 职场文书
法定代表人资格证明书
2015/06/18 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python