实现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教程 预定义变量
Oct 23 PHP
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
Jul 12 PHP
那些年一起学习的PHP(一)
Mar 21 PHP
php中如何同时使用session和cookie来保存用户登录信息
Jul 05 PHP
php时区转换转换函数
Jan 07 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
May 04 PHP
php检查字符串中是否包含7位GSM字符的方法
Mar 17 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
自制PHP框架之设计模式
May 07 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
Jul 31 PHP
基于PHP实现的多元线性回归模拟曲线算法
Jan 30 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
Mar 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
真正的ZIP文件操作类(php)
2007/07/21 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
2014/03/20 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
基于nodejs res.end和res.send的区别
2018/05/14 NodeJs
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
Vue实现多页签组件
2021/01/14 Vue.js
替换python字典中的key值方法
2018/07/06 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
2019/07/19 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
生产部主管岗位职责
2014/01/06 职场文书
联谊活动策划书
2014/01/26 职场文书
销售求职信范文
2014/05/26 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
初级职称评定工作总结
2015/08/13 职场文书
大学军训口号大全
2015/12/24 职场文书
Python实现的扫码工具居然这么好用!
2021/06/07 Python
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js