实现php删除链表中重复的结点
作者:laozhang 时间:2023-09-05 09:36:15
删除链表中重复的结点:
定义两个指针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,重复结点
0
投稿
猜你喜欢
详解python websocket获取实时数据的几种常见链接方式
2023-09-20 08:22:23
如何用Idea或者webstorm跑一个Vue项目(步骤详解)
2022-08-20 17:06:23
Python中Iterator迭代器的使用杂谈
2023-11-23 03:49:30
python 解决print数组/矩阵无法完整输出的问题
2021-05-13 00:45:15
超详细注释之OpenCV构建透明的叠加层
2021-08-18 14:51:01
Vue中使用Teleport的方法示例
2024-05-09 15:13:19
最长用最基本的MSSQL数据库备份与还原
2024-01-17 18:23:07
MySQL单表查询进阶教程(最全面!)
2024-01-22 21:06:42
对变量赋值的理解--Pyton中让两个值互换的实现方法
2022-07-05 02:51:56
快速掌握JavaScript正则表达式
2010-01-23 11:39:00
如何安装绿色版MySQL Community Server 5.7.16并实现远程登录
2024-01-14 13:02:03
Go语言基础变量的声明及初始化示例详解
2024-04-27 15:46:37
Python包管理工具pip的15 个使用小技巧
2023-08-30 17:30:51
windows下mysql 8.0.27 安装配置图文教程
2024-01-24 00:26:57
Python多分支if语句的使用
2022-07-17 17:52:54
django用户登录和注销的实现方法
2021-01-17 13:55:40
浅析python中的分片与截断序列
2022-05-11 02:31:03
python读取Excel实例详解
2021-05-25 16:10:44
pytorch 中forward 的用法与解释说明
2021-08-10 04:14:44
python实现京东订单推送到测试环境,提供便利操作示例
2021-09-01 09:03:46