91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用php怎么刪除鏈表中重復的結點

發布時間:2020-12-09 16:19:56 來源:億速云 閱讀:130 作者:Leah 欄目:開發技術

本篇文章為大家展示了利用php怎么刪除鏈表中重復的結點,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

刪除鏈表中重復的結點:

定義兩個指針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
<&#63;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怎么刪除鏈表中重復的結點,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

裕民县| 咸阳市| 武邑县| 佳木斯市| 墨脱县| 兴宁市| 额济纳旗| 鄯善县| 泽库县| 桂东县| 温州市| 且末县| 黄冈市| 巴林左旗| 新田县| 长白| 鸡东县| 昌宁县| 凉山| 渭源县| 滦南县| 永顺县| 余庆县| 靖远县| 密山市| 方山县| 鄂伦春自治旗| 青龙| 剑川县| 电白县| 湘阴县| 含山县| 淮安市| 张家川| 扬州市| 五大连池市| 宿迁市| 呈贡县| 泗水县| 云南省| 抚顺县|