实现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 相关文章推荐
php4的彩蛋
Oct 09 PHP
PHP编程中字符串处理的5个技巧小结
Nov 13 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
Apr 29 PHP
PHP实现获取域名的方法小结
Nov 05 PHP
19个Android常用工具类汇总
Dec 30 PHP
PHP使用flock实现文件加锁的方法
Jul 01 PHP
我整理的PHP 7.0主要新特性
Jan 07 PHP
详解HTTP Cookie状态管理机制
Jan 14 PHP
symfony2.4的twig中date用法分析
Mar 18 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
Jun 12 PHP
微信支付开发交易通知实例
Jul 12 PHP
PHP时间戳和日期相互转换操作实例小结
Dec 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 security.inc.php代码的深入分析
2013/06/03 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
PHP实现的比较完善的购物车类
2014/12/02 PHP
Laravel5.7 数据库操作迁移的实现方法
2019/04/12 PHP
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
2017/07/13 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
2020/04/07 Javascript
js 动态校验开始结束时间的实现代码
2020/05/25 Javascript
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
python 写的一个爬虫程序源码
2016/02/28 Python
python中正则的使用指南
2016/12/04 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
python实现大文本文件分割
2019/07/22 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
利用Python优雅的登录校园网
2020/10/21 Python
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
char型变量中能不能存贮一个中文汉字
2015/07/08 面试题
上海奥佳笔试题面试题
2016/11/16 面试题
2014年医院个人工作总结
2014/12/09 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
婚庆答谢词
2015/01/04 职场文书
2016国培学习心得体会
2016/01/08 职场文书
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers