实现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版(1)
Oct 09 PHP
php下封装较好的数字分页方法
Nov 23 PHP
discuz程序的PHP加密函数原理分析
Aug 05 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
php excel reader读取excel内容存入数据库实现代码
Dec 06 PHP
解析PHP中intval()等int转换时的意外异常情况
Jun 21 PHP
PHP中应该避免使用同名变量(拆分临时变量)
Apr 03 PHP
Twig模板引擎用法入门教程
Jan 20 PHP
PHP7新特性foreach 修改示例介绍
Aug 26 PHP
php+Memcached实现简单留言板功能示例
Feb 15 PHP
php命令行写shell实例详解
Jul 19 PHP
php实现文件上传基本验证
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
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
php中++i 与 i++ 的区别
2012/08/08 PHP
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
PHP版微信公众平台红包API
2015/04/02 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
强制设为首页代码
2006/06/19 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
JS中eval函数的使用示例
2013/07/21 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
详解vue-router基本使用
2017/04/18 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
社区娱乐活动方案
2014/08/21 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers
box-shadow单边阴影的实现
2023/05/21 HTML / CSS