[PHP] 算法-合并两个有序链表为一个有序链表的PHP实现
生活随笔
收集整理的這篇文章主要介紹了
[PHP] 算法-合并两个有序链表为一个有序链表的PHP实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
合并兩個有序的鏈表為一個有序的鏈表:
類似歸并排序中合并兩個數組的部分
1.遍歷鏈表1和鏈表2,比較鏈表1和2中的元素大小
2.如果鏈表1結點大于鏈表2的結點,該結點放入第三方鏈表
3.鏈表1往下走一步,反之亦如此
4.當兩個鏈表中有一個結束了以后,另一個鏈表就可以全部放進第三方鏈表了list3
while list1!=null list2!=nullif list1->data >= list2->datalist3->next=list1list3=list1 //當前指針后移list1=list1->next //鏈表1走一步elselist3->next=list2list3=list2list2=list2->nextif list1!=nulllist3->next=list1
if list2!=nulllist3->next=list2 $linkList=new Node();
$linkList->next=null;
$temp=$linkList;
for($i=1;$i<=10;$i+=2){$node=new Node();$node->data=$i;$node->next=null;$temp->next=$node;$temp=$node;
}
//第二個有序的鏈表
$list2=new Node();
$temp=$list2;
for($i=2;$i<=10;$i+=2){$node=new Node();$node->data=$i;$node->next=null;$temp->next=$node;$temp=$node;
}//合并兩個鏈表
$newlist=new Node();
$list1=$linkList->next;//跳過頭結點
$list2=$list2->next;$list3=$newlist;//一定要賦予給這個臨時結點,否則新結點前移的時候就會被覆蓋
while($list1!=null && $list2!=null){if($list1->data<=$list2->data){$list3->next=$list1;//新鏈表指向鏈表1結點$list3=$list1;//新鏈表當前結點往前移動$list1=$list1->next;//鏈表1往前移動}else{$list3->next=$list2;$list3=$list2;$list2=$list2->next;}
}
if($list1!=null){$list3->next=$list1;
}
if($list2!=null){$list3->next=$list2;
}var_dump($newlist);
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的[PHP] 算法-合并两个有序链表为一个有序链表的PHP实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 慕课网_《RabbitMQ消息中间件极速
- 下一篇: eclipse中maven项目红叉解决方