实现php删除链表中重复的结点
时间:2022-07-27
本文章向大家介绍实现php删除链表中重复的结点,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
删除链表中重复的结点:
定义两个指针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删除链表中重复的结点的全部内容和代码,感谢大家对网站事(zalou.cn)的支持。
- 深入剖析Spring(二)——IoC容器的实现
- JDBC上关于数据库中多表操作一对多关系和多对多关系的实现方法
- 深入剖析Spring(一)——IoC的基本概念(从面向对象角度介绍)
- Restful安全认证及权限的解决方案
- Java并发容器大合集
- Java并发编程的艺术(九)——批量获取多条线程的执行结果
- web.xml中load-on-startup的作用
- Java并发编程的艺术(七)——Executors
- Java并发编程的艺术(八)——闭锁、同步屏障、信号量详解
- PowerDesigner使用教程|使用方法
- Java并发编程的艺术(一)——并发编程需要注意的问题
- 梯度下降法快速教程 | 第三章:学习率衰减因子(decay)的原理与Python实现
- Java并发编程的艺术(三)——volatile
- java学习手册-java 新手入门必看的30个题
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC