实现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之字符串变相相减的代码
Mar 19 PHP
php 变量定义方法
Jun 14 PHP
php图片上传存储源码并且可以预览
Aug 26 PHP
Win下如何安装PHP的APC拓展
Aug 07 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
PHP基于文件存储实现缓存的方法
Jul 20 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
Mar 07 PHP
PHP会话操作之cookie用法分析
Sep 28 PHP
php rmdir使用递归函数删除非空目录实例详解
Oct 20 PHP
PHP弱类型语言中类型判断操作实例详解
Aug 10 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 PHP
laravel5.1框架model类查询的实现方法
Oct 08 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
3.从实例开始
2006/10/09 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
php类常量的使用详解
2013/06/08 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
对于PHP 5.4 你必须要知道的
2013/08/07 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
2013/11/07 PHP
PHP微信支付开发实例
2016/06/22 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
详解PHP PDO简单教程
2019/05/28 PHP
PHP基于array_unique实现二维数组去重
2020/07/14 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
js 采用delete实现继承示例代码
2014/05/20 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
深入了解python中元类的相关知识
2019/08/29 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
机关职员工作检讨书
2014/10/23 职场文书
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript
Redis分布式锁的7种实现
2022/04/01 Redis