您的位置:首页 > 其它

leetcode Merge Two Sorted Lists

2015-08-11 21:17 459 查看
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

即将两个以排好序的链表按照顺序合并成一个链表并返回:

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
if(l1==NULL&&l2==NULL)return 0;
if(l1==NULL&&l2!=NULL)return l2;
if(l1!=NULL&&l2==NULL)return l1;
struct ListNode*head=NULL,*tail=NULL;
struct ListNode*p=l1;
struct ListNode*q=l2;
if(p->val<q->val){head=p;p=p->next;}
else {head=q;q=q->next;}
tail=head;//构造一个链表并初始化
while(p&&q){
if(p->val<q->val){tail->next=p;tail=p;p=p->next;}
else {tail->next=q;tail=q;q=q->next;}
}
if(p)tail->next=p;
if(q)tail->next=q;
return head;
}
思路:先构造一个单链表,并从两个链表里第一个节点中选择满足顺序的一个作为所构造链表的第一个节点。之后比较两个链表节点大小,并采用尾插入法完成链表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: