C语言合并两个有序链表


 

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

思路: 先把两个链表合并,然后冒泡排序!初学者の笨比解法@@

struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
    int i,j,temp,len=0;
   struct ListNode* p = l1 ;
   struct ListNode* q;
   if(l1 ==NULL) return l2;
   if(l2 == NULL) return l1 ;
   
    while(p->next!=NULL )
    {
        p=p->next ;
    }
   // printf("此时第一个链表的尾结点值是:%d",p->val);
    p->next = l2 ;
    p = l1   ;
    while(p!=NULL) //计算新链表的长度
    {
        p=p->next ;
        len++ ;
    }
    for(i=0;i<len-1;i++)
    {
        for(j=0,q=l1;j<len-i-1;j++,q=q->next)
        {
            if(q->val > q->next->val)
            {
                temp= q->val;
                q->val=  q->next->val ;
                q->next->val= temp ;
            }
        }
    }
    return l1 ;
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM