合并两个排序链表
2017-03-31 14:39
148 查看
问题描述:将两个排序链表合并为一个新的排序链表。
样例:
给出
返回
解题思路:令两个链表的开始元素比较,将小的元素放到新链表中,然后拥有小元素的指针向后移动,知道把所有的元素全放到新链表表中。
实验代码:
class Solution {
public:
/**
* @param ListNode l1 is the head of the linked list
* @param ListNode l2 is the head of the linked list
* @return: ListNode head of linked list
*/
ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {
// write your code here
ListNode *q,*p,*x,*z;
x=new ListNode;
z=x;
q=l1;
p=l2;
if(l1==NULL)
return l2;
if(l2==NULL)
return l1;
while(q!=NULL&&p!=NULL)
{
if(q->val<=p->val)
{
ListNode *y;
y=new ListNode(q->val);
x->next=y;
x=y;
q=q->next;
}
else
{
ListNode *y;
y=new ListNode(p->val);
x->next=y;
x=y;
p=p->next;
}
if(q==NULL)
{
x->next=p;
}
if(p==NULL)
{
x->next=q;
}
}
return z->next;
}
};
个人感想:若一个链表循环完,另一个链表没循环完需要把没循环的剩余元素加到新的链表后。
样例:
给出
1->3->8->11->15->null,
2->null,
返回
1->2->3->8->11->15->null。
解题思路:令两个链表的开始元素比较,将小的元素放到新链表中,然后拥有小元素的指针向后移动,知道把所有的元素全放到新链表表中。
实验代码:
class Solution {
public:
/**
* @param ListNode l1 is the head of the linked list
* @param ListNode l2 is the head of the linked list
* @return: ListNode head of linked list
*/
ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {
// write your code here
ListNode *q,*p,*x,*z;
x=new ListNode;
z=x;
q=l1;
p=l2;
if(l1==NULL)
return l2;
if(l2==NULL)
return l1;
while(q!=NULL&&p!=NULL)
{
if(q->val<=p->val)
{
ListNode *y;
y=new ListNode(q->val);
x->next=y;
x=y;
q=q->next;
}
else
{
ListNode *y;
y=new ListNode(p->val);
x->next=y;
x=y;
p=p->next;
}
if(q==NULL)
{
x->next=p;
}
if(p==NULL)
{
x->next=q;
}
}
return z->next;
}
};
个人感想:若一个链表循环完,另一个链表没循环完需要把没循环的剩余元素加到新的链表后。
相关文章推荐
- 合并两个排序的链表
- 合并两个排序的链表
- 面试题17 合并两个排序的链表
- 牛客网刷题之合并两个排序的链表
- 【面试题十七】合并两个排序的链表
- 合并两个递增排序的链表
- 合并两个排序的链表
- 合并两个排序的链表java实现
- 面试题17:合并两个排序的链表
- 合并两个排序链表
- 剑指offer题解【合并两个排序的链表】-java
- 合并两个排序的链表
- 合并两个排序链表
- 合并两个排序链表
- 合并两个排序的链表
- 输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然按照递增排序
- 剑指offer——面试题17:合并两个排序的链表(非递归方法和递归方法)
- 合并两个排序链表
- lintcode ----合并两个排序链表
- 题目1519:合并两个排序的链表