实现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 相关文章推荐
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
Jun 04 PHP
PHP MemCached 高级缓存应用代码
Aug 05 PHP
一道求$b相对于$a的相对路径的php代码
Aug 08 PHP
php 深入理解strtotime函数的使用详解
May 23 PHP
php与flash as3 socket通信传送文件实现代码
Aug 16 PHP
php生成html文件方法总结
Dec 01 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
php查询操作实现投票功能
May 09 PHP
php时间计算相关问题小结
May 09 PHP
PHP 读取大文件并显示的简单实例(推荐)
Aug 12 PHP
Yii2实现log输出到file及database的方法
Nov 12 PHP
PHP切割汉字的常用方法实例总结
Apr 27 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与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
PHP获取表单textarea数据中的换行问题
2010/09/10 PHP
php中使用redis队列操作实例代码
2013/02/07 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
js 替换
2008/02/19 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
javascript伸缩型菜单实现代码
2015/11/16 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
jQuery+ajax实现文件上传功能
2020/12/22 jQuery
[02:07]DOTA2超级联赛专访BBC:难忘网吧超神经历
2013/06/09 DOTA
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
[00:20]TI9不朽观赛名额抽取
2019/08/05 DOTA
使用graphics.py实现2048小游戏
2015/03/10 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
JAVA代码查错题
2014/10/10 面试题
安全标准化实施方案
2014/02/20 职场文书
个人委托书格式
2014/04/04 职场文书
2014大学生批评与自我批评思想汇报
2014/09/21 职场文书
开除员工通知
2015/04/22 职场文书
2015年除四害工作总结
2015/07/23 职场文书
56句经典英文座右铭
2019/08/09 职场文书