首页 > 编程 > PHP > 正文

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

2020-03-22 17:03:57
字体:
来源:转载
供稿:网友
本篇文章给大家带来的内容是关于php如何实现删除链表中重复的结点?(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

删除链表中重复的结点:

定义两个指针pre和html' target='_blank'>current

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

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 ]=  NULLobject(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如何实现删除链表中重复的结点?(代码实例)的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表