1. 程式人生 > >演算法題--合併兩個排序的連結串列

演算法題--合併兩個排序的連結串列

輸入兩個單調遞增的連結串列,輸出兩個連結串列合成後的連結串列,當然我們需要合成後的連結串列滿足單調不減規則。

function Merge($pHead1, $pHead2)
{
    if($pHead1 == NULL) return $pHead2;
    if($pHead2 == NULL) return $pHead1;
    $re = new ListNode();
    if ($pHead1 -> val <= $pHead2 -> val) {
        $re = $pHead1;
        $pHead1 = $pHead1 -> next;
    } else {
        $re = $pHead2;
        $pHead2 = $pHead2 -> next;
    }
    $p = $re;
    while ($pHead2 && $pHead1) {
       	if ($pHead1 -> val <= $pHead2 -> val) {
            $p -> next = $pHead1;
            $p = $p -> next;
            $pHead1 = $pHead1 -> next;
        } else {
            $p -> next = $pHead2;
            $p = $p -> next;
            $pHead2 = $pHead2 -> next;
        }
    }
    if ($pHead2 != NULL) {
        $p -> next = $pHead2;
    }
    if ($pHead1 != NULL) {
        $p -> next = $pHead1;
    }
    return $re;
}