21. Merge Two Sorted Lists
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;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode * newListHead,* newListNode,*newListTail;
newListHead = (ListNode *)malloc(sizeof(ListNode));
newListTail = newListHead;
while( (NULL != l1) && (NULL != l2) )
{
if(l1->val <= l2->val)
{
newListNode = (ListNode *)malloc(sizeof(ListNode));
newListNode->val = l1->val;
newListTail->next = newListNode;
newListTail = newListNode;
l1 = l1->next;
}
else
{
newListNode = (ListNode *)malloc(sizeof(ListNode));
newListNode->val = l2->val;
newListTail->next = newListNode;
newListTail = newListNode;
l2 = l2->next;
}
}
if(NULL != l1)
{
while(l1)
{
newListNode = (ListNode *)malloc(sizeof(ListNode));
newListNode->val = l1->val;
newListTail->next = newListNode;
newListTail = newListNode;
l1 = l1->next;
}
}
if(NULL != l2)
{
while(l2)
{
newListNode = (ListNode *)malloc(sizeof(ListNode));
newListNode->val = l2->val;
newListTail->next = newListNode;
newListTail = newListNode;
l2 = l2->next;
}
}
newListTail->next = NULL;
return newListHead->next;
}
};
2016-08-06 01:40:31
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。