实现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 相关文章推荐
PHP+MYSQL开发工具及资源收藏
Jan 02 PHP
一篇入门的php Class 文章
Apr 04 PHP
PHP开发不能违背的安全规则 过滤用户输入
May 01 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
PHP积分兑换接口实例
Feb 09 PHP
PHP中预定义的6种接口介绍
May 12 PHP
PHP实现动态执行代码的方法
Mar 25 PHP
基于PHPexecl类生成复杂的报表表头示例
Oct 14 PHP
老生常谈PHP面向对象之解释器模式
May 17 PHP
PHP进阶学习之反射基本概念与用法分析
Jun 18 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 PHP
php解析非标准json、非规范json的方式实例
May 10 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中运用http调用的GET和POST方法示例
2014/09/29 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
2012/05/23 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
一则python3的简单爬虫代码
2014/05/26 Python
Python正则获取、过滤或者替换HTML标签的方法
2016/01/28 Python
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
Orlebar Brown官网:设计师泳裤和泳装
2020/12/08 全球购物
司机的工作范围及职责
2013/11/13 职场文书
档案接收函范文
2014/01/10 职场文书
售前工程师职业生涯规划
2014/03/02 职场文书
保护环境标语
2014/06/09 职场文书
科技活动周标语
2014/10/08 职场文书
初中家长评语和期望
2014/12/26 职场文书
聘任证明怎么写
2015/03/02 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python