实现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语法(5)
Oct 09 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
Jul 03 PHP
php urlencode()与urldecode()函数字符编码原理详解
Dec 06 PHP
选择PHP作为网站开发语言的原因分享
Jan 03 PHP
解析PHP中ob_start()函数的用法
Jun 24 PHP
ThinkPHP使用心得分享-分页类Page的用法
May 15 PHP
PHP开发框架kohana中处理ajax请求的例子
Jul 14 PHP
PHP rsa加密解密使用方法
Apr 27 PHP
微信 getAccessToken方法详解及实例
Nov 23 PHP
php中输出json对象的值(实现方法)
Mar 07 PHP
如何优雅的使用 laravel 的 validator验证方法
Nov 11 PHP
php查询内存信息操作示例
May 09 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的简单实例
2014/01/15 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
2018/05/23 PHP
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
2019/10/30 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
Python 除法小技巧
2008/09/06 Python
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
Python复制文件操作实例详解
2015/11/10 Python
Python实现信用卡系统(支持购物、转账、存取钱)
2016/06/24 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
Python处理文本换行符实例代码
2018/02/03 Python
Django csrf 验证问题的实现
2018/10/09 Python
Python构建图像分类识别器的方法
2019/01/12 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
C++是不是类型安全的
2014/02/18 面试题
几个Shell Script面试题
2012/08/31 面试题
公务员职务工作的自我评价
2013/11/01 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
辞职信怎么写?
2019/05/21 职场文书