中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

利用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

佛冈县| 花垣县| 肇东市| 灯塔市| 嵊州市| 庐江县| 福安市| 西乌| 宜宾市| 张家口市| 宝鸡市| 柘荣县| 错那县| 天津市| 宜都市| 张家口市| 浮山县| 万盛区| 辽宁省| 德清县| 五指山市| 阿鲁科尔沁旗| 揭西县| 平原县| 南漳县| 胶州市| 宁都县| 乌审旗| 曲沃县| 林周县| 信宜市| 牙克石市| 南开区| 巩留县| 博罗县| 辉南县| 北辰区| 乐昌市| 栾城县| 宜章县| 西乌|