[PHP] 算法-删除链表中重复的结点的PHP实现
删除链表中重复的结点:
1.定义两个指针pre和current
2.两个指针同时往后移动,current指针如果与后一个结点值相同,就独自往前走直到没有相等的
3.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实现的更多相关文章
- leetcode 203. Remove Linked List Elements 、83. Remove Duplicates from Sorted List 、82. Remove Duplicates from Sorted List II(剑指offer57 删除链表中重复的结点)
203题是在链表中删除一个固定的值,83题是在链表中删除重复的数值,但要保留一个:82也是删除重复的数值,但重复的都删除,不保留. 比如[1.2.2.3],83题要求的结果是[1.2.3],82题要求 ...
- 【Java】 剑指offer(18) 删除链表中重复的结点
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重 ...
- 《剑指offer》第十八题(删除链表中重复的结点)
// 面试题18(二):删除链表中重复的结点 // 题目:在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重复 // 结点被删除之后,链表如图3.4(b)所示. #include &l ...
- 剑指offer-18-2. 删除链表中重复的结点
剑指offer-18-2. 删除链表中重复的结点 链表 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3-> ...
- 【剑指Offer】删除链表中重复的结点 解题报告(Python)
[剑指Offer]删除链表中重复的结点 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interview ...
- 链表:删除链表中重复的结点(java实现)
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...
- 剑指Offer 56. 删除链表中重复的结点 (链表)
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...
- 剑指offer五十六之删除链表中重复的结点
一.题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...
- 剑指Offer——删除链表中重复的结点
题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理 ...
随机推荐
- myeclipse 自动部署web项目(自动编译)
打开自动编译:project->build automatically; 注:以下两种方法适用tomcat配置在myeclipse中的情况. 1.如果在myeclipse中tomcat是以deb ...
- windows安装mongodb及相关命令
- 安装 解压: mongodb-win32-x86_64-2008plus-ssl-3.6.4.7z 将文件夹改名为mongodb 移动文件到指定目录下,如: C:\python\soft ...
- UBUNTU14.0.4安装eclipse
jdk工具下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 点击这个下载 ...
- nginx 502 bad gateway 问题处理集锦
一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的, 这将导致fastcgi进程被挂起, 如果你的fastcgi服务对这个挂起处理的不好, 那么最后就极有可能导致5 ...
- 如何减少SQL Server中的PREEMPTIVE_OS_WRITEFILEGATHER等待类型
在数据库大小分配期间,我正在等待类型PREEMPTIVE_OS_WRITEFILEGATHER.昨天,我将数据库大小配置为供应商建议的值.我们需要将数据库大小设置为700GB,保留150 GB的日志文 ...
- Android开发 - 掌握ConstraintLayout(五)偏差(Bias)
比如实现这样一个场景: "在屏幕宽度的1/4的地方放置一个View" 使用传统布局时,实现按照屏幕的宽度(高度),或者相对两个View之间距离的一个比例来进行布局,就显得非常麻烦, ...
- Django orm 实现批量插入数据
Django ORM 中的批量操作 在Hibenate中,通过批量提交SQL操作,部分地实现了数据库的批量操作.但在Django的ORM中的批量操作却要完美得多,真是一个惊喜. 数据模型定义 首先,定 ...
- 面试时遇到的题目。正则,replace()
function Fn(str){ this.str = str; } Fn.prototype.format = function(){ var arg = arguments; var dd = ...
- 在jsp的js和css里面使用EL表达式取值|style里面用$取值
众所周知,如果直接在jsp的js或者css语句块里面写${***}取值的话,程序会不识别这玩意,但是,我们有时候确实需要动态取值,比如,js为了获得对象的某一个值,不方便用js的getElementB ...
- JavaScript实现页面显示倒计时功能
下面是用JS中的日期函数和定时器完成的一个倒计时的例子,效果如图: 代码如下: <!DOCTYPE html> <html> <head> <title> ...