佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 實(shí)現(xiàn)php刪除鏈表中重復(fù)的結(jié)點(diǎn)

實(shí)現(xiàn)php刪除鏈表中重復(fù)的結(jié)點(diǎn)

熱門(mén)標(biāo)簽:科大訊飛語(yǔ)音識(shí)別系統(tǒng) 團(tuán)購(gòu)網(wǎng)站 阿里云 Mysql連接數(shù)設(shè)置 服務(wù)器配置 Linux服務(wù)器 電子圍欄 銀行業(yè)務(wù)

刪除鏈表中重復(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
   }
  }
 }
}

以上就是實(shí)現(xiàn)php刪除鏈表中重復(fù)的結(jié)點(diǎn)的全部?jī)?nèi)容和代碼,感謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • php遞歸調(diào)用刪除數(shù)組空值元素的方法
  • PHP遞歸刪除多維數(shù)組中的某個(gè)值
  • PHP實(shí)現(xiàn)雙鏈表刪除與插入節(jié)點(diǎn)的方法示例
  • 利用PHP實(shí)現(xiàn)遞歸刪除鏈表元素的方法示例

標(biāo)簽:蚌埠 衢州 棗莊 江蘇 萍鄉(xiāng) 大理 衡水 廣元

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《實(shí)現(xiàn)php刪除鏈表中重復(fù)的結(jié)點(diǎn)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢(xún)

    • 400-1100-266
    苗栗县| 南投县| 南充市| 和龙市| 望江县| 马鞍山市| 灌云县| 盐山县| 邯郸市| 班玛县| 封丘县| 平谷区| 兴安县| 张北县| 芜湖县| 大竹县| 郴州市| 宜良县| 横峰县| 三穗县| 谢通门县| 牡丹江市| 砀山县| 赤水市| 铜梁县| 梧州市| 灵宝市| 蒙阴县| 武义县| 永兴县| 顺昌县| 昌邑市| 永定县| 苍山县| 司法| 峨眉山市| 东方市| 肥东县| 荔浦县| 库尔勒市| 磴口县|