实现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 adodb连接mssql解决乱码问题
Jun 12 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
PHP 中检查或过滤IP地址的实现代码
Nov 27 PHP
PHP魔术方法__GET、__SET使用实例
Nov 25 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
Mar 03 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
Jun 24 PHP
PHP简单日历实现方法
Jul 20 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
Apr 21 PHP
ThinkPHP5框架缓存查询操作分析
May 30 PHP
PHP面向对象程序设计之构造方法和析构方法详解
Jun 13 PHP
PHP设计模式入门之状态模式原理与实现方法分析
Apr 26 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的开发框架的现状和展望
2007/03/16 PHP
php explode函数实例代码
2012/02/27 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
php实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
javascript封装简单实现方法
2015/08/11 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
layui 表格操作列按钮动态显示的实现方法
2019/09/06 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
[03:39]2015国际邀请赛主赛事首日精彩回顾
2015/08/05 DOTA
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
Python3实现二叉树的最大深度
2019/09/30 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
如何表示python中的相对路径
2020/07/08 Python
python获取整个网页源码的方法
2020/08/03 Python
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
半年思想汇报
2013/12/30 职场文书
英语专业学生个人求职信范文
2014/01/06 职场文书
自我鉴定三原则
2014/01/13 职场文书
电话客服专员岗位职责
2014/06/28 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
员工工作自我评价
2014/09/26 职场文书
大学迎新生标语
2014/10/06 职场文书