21. 合并两个有序链表
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
思路:将两个链表遍历放入一个数组中,再将数组排序,再放入一个新建的链表中。
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2)
{
int a[100],i,k=0,j,t;
while(l1)
{
a[k++]=l1->val;
l1=l1->next;
}
while(l2)
{
a[k++]=l2->val;
l2=l2->next;
}
for(i=0;i<k-1;i++)
{
for(j=i+1;j<k;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
struct ListNode* head;
struct ListNode* r;
head=r=NULL;
for(i=0;i<k;i++)
{
struct ListNode* p=(struct ListNode*)malloc(sizeof(struct ListNode));
p->val=a[i];
p->next=NULL;
if(head==NULL)
{
head=p;
}
else
{
r->next=p;
}
r=p;
}
return head;
}

本文详细解析了如何将两个升序链表合并为一个新的升序链表的算法过程。通过遍历两个链表,将所有节点值存入数组,然后排序数组,最后创建新的链表返回。适用于链表操作和数据排序的学习。
664

被折叠的 条评论
为什么被折叠?



