/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
//创建一个新的节点
struct ListNode* list3=(struct ListNode*)malloc(sizeof(struct ListNode));
//创建头指针
struct ListNode* head=list3;
//创建插入节点的指针
struct ListNode* p3=list3;
//如果list1为空则返回list2
if(list1==NULL){
return list2;
}
//如果list2为空则返回list1
if(list2==NULL){
return list1;
}
while(list1!=NULL && list2!=NULL){
if(list1->val < list2->val){
p3->next=list1;
p3=p3->next;
list1=list1->next;
p3->next=NULL;
}
else{
p3->next=list2;
p3=p3->next;
list2=list2->next;
p3->next=NULL;
}
}
//判断list1和list2中是否还有剩余元素
if(list1){
p3->next=list1;
}
if(list2){
p3->next=list2;
}
return head->next;
}
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode dummy=new ListNode(),p=dummy;
ListNode p1=list1,p2=list2;
while(p1!=null && p2!=null){
if(p1.val >= p2.val){
p.next=p2;
p2=p2.next;
}
else{
p.next=p1;
p1=p1.next;
}
p=p.next;
}
if(p1!=null){
p.next=p1;
}
if(p2!=null){
p.next=p2;
}
return dummy.next;
}
}