实现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 相关文章推荐
计算2000年01月01日起到指定日的天数
Oct 09 PHP
?繁体转换的class
Oct 09 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
Feb 16 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
Nov 29 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
May 10 PHP
解析dedecms空间迁移步骤详解
May 15 PHP
thinkphp配置连接数据库技巧
Dec 02 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
php中array_slice和array_splice函数解析
Oct 18 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
如何在centos8自定义目录安装php7.3
Nov 28 PHP
PHP接口类(interface)的定义、特点和应用示例
May 18 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
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
php计算程序运行时间的简单例子分享
2014/05/10 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
判断滚动条到底部的JS代码
2013/11/04 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
Python之PyUnit单元测试实例
2014/10/11 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
Python编程中的文件操作攻略
2015/10/16 Python
Python中set与frozenset方法和区别详解
2016/05/23 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
Django通过设置CORS解决跨域问题
2020/11/26 Python
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
团队精神演讲稿
2013/12/31 职场文书
商铺消防安全责任书
2014/07/29 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
高三语文复习计划
2015/01/19 职场文书
汽车转让协议书
2015/01/29 职场文书
单位政审意见范文
2015/06/04 职场文书
python中tkinter复选框使用操作
2021/11/11 Python