/**
* Definition for a singly-linked list.
* class ListNode {
* public $val = 0;
* public $next = null;
* function __construct($val) { $this->val = $val; }
* }
*/
class Solution {
/**
* @param ListNode $l1
* @param ListNode $l2
* @return ListNode
*/
function mergeTwoLists ($l1, $l2)
{
if (empty($l1)){
return $l2;
}
if (empty($l2)){
return $l1;
}
// 第一个数据往链表头插的情况
if ($l2->val < $l1->val) {
if ($l2->next){
$p = $l2->next;
$l2->next = $l1;
$l1 = $l2;
$l2 = $p;
}else{
$l2->next = $l1;
$l1 = $l2;
return $l1;
}
}
$l=$l1;
while ($l1) {
if ($l1->next) {
if ($l1->val <= $l2->val && $l2->val <= $l1->next->val) {
if ($l2->next){
$p = $l2->next;
$l2->next = $l1->next;
$l1->next = $l2;
$l2=$p;
}else{
$l2->next = $l1->next;
$l1->next = $l2;
return $l;
}
}else{
// 最后一条数据
$l1=$l1->next;
continue;
}
}else{
$l1->next = $l2;
return $l;
}
}
}
}