好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 實現php刪除鏈表中重復的結點

實現php刪除鏈表中重復的結點

熱門標簽:合肥企業外呼系統線路 桂陽公司如何做地圖標注 電信外呼系統多少錢一個月 神龍斗士電話機器人 萍鄉商鋪地圖標注 代理打電話機器人 太原400電話申請流程 宿州正規外呼系統軟件 企業400電話辦理多少費用

刪除鏈表中重復的結點:

定義兩個指針pre和current

兩個指針同時往后移動,current指針如果與后一個結點值相同,就獨自往前走直到沒有相等的

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遞歸調用刪除數組空值元素的方法
  • PHP遞歸刪除多維數組中的某個值
  • PHP實現雙鏈表刪除與插入節點的方法示例
  • 利用PHP實現遞歸刪除鏈表元素的方法示例

標簽:鄂州 白銀 廊坊 太原 崇左 辛集 綏化 衡陽

巨人網絡通訊聲明:本文標題《實現php刪除鏈表中重復的結點》,本文關鍵詞  實現,php,刪除,鏈,表中,重復,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《實現php刪除鏈表中重復的結點》相關的同類信息!
  • 本頁收集關于實現php刪除鏈表中重復的結點的相關信息資訊供網民參考!
  • 推薦文章