实现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 相关文章推荐
打造计数器DIY三步曲(上)
Oct 09 PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 PHP
浅析PHP文件下载原理
Dec 25 PHP
php判断两个日期之间相差多少个月份的方法
Jun 18 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
Dec 07 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 PHP
使用XHProf查找PHP性能瓶颈的实例
Dec 13 PHP
php常用的工具开发整理
Sep 26 PHP
Yii 框架控制器创建使用及控制器响应操作示例
Oct 14 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
Mar 04 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
PHP addcslashes()函数讲解
2019/02/03 PHP
javascript使用activex控件的代码
2011/01/27 Javascript
javascript 进阶篇1 正则表达式,cookie管理,userData
2012/03/14 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
为开发者准备的10款最好的jQuery日历插件
2014/02/04 Javascript
javascript计时器详解
2015/02/28 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
Python Queue模块详解
2014/11/30 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
初中校园广播稿
2014/02/02 职场文书
小学校本培训方案
2014/06/06 职场文书
保险公司开门红口号
2014/06/21 职场文书
出售房屋委托书范本
2014/09/24 职场文书
运动会3000米加油稿
2015/07/21 职场文书