2019-08-26 13:34:21 4057瀏覽
本篇文章扣丁學(xué)堂PHP培訓(xùn)小編給小伙伴們分享一下關(guān)于PHP刪除鏈表中重復(fù)的結(jié)點(diǎn)的相關(guān)知識(shí)點(diǎn)內(nèi)容以及相關(guān)代碼,PHP開(kāi)發(fā)技術(shù)在各大公司企業(yè)中一直都是備受青睞的,所以想要學(xué)習(xí)PHP開(kāi)發(fā)技術(shù)的人也有很多,對(duì)PHP開(kāi)發(fā)感興趣的小伙伴就隨小編來(lái)了解一下吧。
刪除鏈表中重復(fù)的結(jié)點(diǎn):
定義兩個(gè)指針pre和current
兩個(gè)指針同時(shí)往后移動(dòng),current指針如果與后一個(gè)結(jié)點(diǎn)值相同,就獨(dú)自往前走直到?jīng)]有相等的pre指針next直接指向current指針的后一個(gè),把相同的都跳過(guò)
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; } } //構(gòu)造一個(gè)帶重復(fù)的鏈表 $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;//當(dāng)前都指向第一個(gè)結(jié)點(diǎn) $current=$pHead->next;//當(dāng)前結(jié)點(diǎn)是第一個(gè)結(jié)點(diǎn) while($current!=null){ //如果當(dāng)前結(jié)點(diǎn)值和當(dāng)前結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)值相同 if($current->next!=null && $current->data==$current->next->data){ //保存當(dāng)前結(jié)點(diǎn)值 $val=$current->data; //當(dāng)前結(jié)點(diǎn)往后移直到和下一個(gè)結(jié)點(diǎn)值不相等 while($current->next!=null && $val==$current->next->data){ $current=$current->next; } //前一個(gè)指針next直接指向當(dāng)前結(jié)點(diǎn)的next $pre->next=$current->next; } //兩個(gè)指針同時(shí)后移 $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 } } } }
想要了解更多關(guān)于PHP開(kāi)發(fā)方面內(nèi)容的小伙伴,請(qǐng)關(guān)注扣丁學(xué)堂PHP培訓(xùn)官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專(zhuān)業(yè)的PHP講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的PHP視頻教程定能讓你快速掌握PHP從入門(mén)到精通開(kāi)發(fā)實(shí)戰(zhàn)技能??鄱W(xué)堂PHP技術(shù)交流群:374332265。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】 【掃碼進(jìn)入Python全棧開(kāi)發(fā)免費(fèi)公開(kāi)課】