php如何实现删除链表中重复的结点?(代码实例)

php如何实现删除链表中重复的结点?(代码实例)

内容导读

收集整理的这篇技术教程文章主要介绍了php如何实现删除链表中重复的结点?(代码实例),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2332字,纯文字阅读大概需要4分钟

内容图文

本篇文章给大家带来的内容是关于php如何实现删除链表中重复的结点?(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

删除链表中重复的结点:

  1. 定义两个指针pre和current

  2. 两个指针同时往后移动,current指针如果与后一个结点值相同,就独自往前走直到没有相等的

  3. pre指针next直接指向current指针的后一个,把相同的都跳过

pre=linkListcurrent=linkListwhile 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->nextreturn linkList
<?phpclass 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如何实现输出链表倒数第k个结点(代码实例)

php如何实现从尾到头打印链表(代码实例)

以上就是php如何实现删除链表中重复的结点?(代码实例)的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的php如何实现删除链表中重复的结点?(代码实例)全部内容,希望文章能够帮你解决php如何实现删除链表中重复的结点?(代码实例)所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com