合并兩個有序的鏈表為一個有序的鏈表:
類似歸并排序中合并兩個數(shù)組的部分
1.遍歷鏈表1和鏈表2,比較鏈表1和2中的元素大小
2.如果鏈表1結(jié)點大于鏈表2的結(jié)點,該結(jié)點放入第三方鏈表
3.鏈表1往下走一步,反之亦如此
4.當兩個鏈表中有一個結(jié)束了以后,另一個鏈表就可以全部放進第三方鏈表了
list3while list1!=null list2!=null if list1- data = list2- data list3- next=list1 list3=list1 //當前指針后移 list1=list1- next //鏈表1走一步 else list3- next=list2 list3=list2 list2=list2- nextif list1!=null list3- next=list1if list2!=null list3- next=list2
$linkList=new Node();$linkList- next=null;$temp=$linkList;for($i=1;$i $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 $i+=2){ $node=new Node(); $node- data=$i; $node- next=null; $temp- next=$node; $temp=$node;//合并兩個鏈表$newlist=new Node();$list1=$linkList- next;//跳過頭結(jié)點$list2=$list2- next;$list3=$newlist;//一定要賦予給這個臨時結(jié)點,否則新結(jié)點前移的時候就會被覆蓋while($list1!=null $list2!=null){ if($list1- data =$list2- data){ $list3- next=$list1;//新鏈表指向鏈表1結(jié)點 $list3=$list1;//新鏈表當前結(jié)點往前移動 $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);
相關推薦:
PHP實現(xiàn)合并兩個排序鏈表代碼分享
PHP實現(xiàn)合并兩個排序鏈表詳解
以上就是PHP如何實現(xiàn)合并兩個有序鏈表為一個有序鏈表(代碼)的詳細內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
新聞熱點
疑難解答
圖片精選