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


    /*
    合并两个有序链表。--迭代法
    */
    #include<stdio.h>
    #include<malloc.h>
    #include<string.h>
    #include<stdlib.h>
    #include<math.h>
    #include<string.h>
    #include <iostream>
    typedef struct ListNode{
        int val;
        struct ListNode *next;
    };
    void print(struct ListNode *L){
        struct ListNode *p=L->next;
        while(p){
            printf("%d ",p->val);
            p=p->next;
        }
        printf("
    ");
    }
    void create(struct ListNode *&L,int a[],int n){
        struct ListNode *r,*s;
        L=(struct ListNode*)malloc(sizeof(struct ListNode));
        r=L;
        int i;
        for(i=0;i<n;i++){
            s=(struct ListNode*)malloc(sizeof(struct ListNode));
            s->val=a[i];
            r->next=s;
            r=s;
        }
        r->next=NULL;
    }
    
    struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
        struct ListNode *L,*p,*pa=l1->next,*pb=l2->next;
        L=(struct ListNode*)malloc(sizeof(struct ListNode));
        p=L;
        while(pa&&pb){
            if(pa->val<pb->val){
                p->next=pa;
                pa=pa->next;
            }else{
                p->next=pb;
                pb=pb->next;
            }
            p=p->next;
        }
        p->next=pa!=NULL?pa:pb;
        return L;
    }
    
    int main()
    {
        struct ListNode *La,*Lb,*L;
        int a[]={1,2,4},b[]={1,3,4};
        create(La,a,3);
        create(Lb,b,3);
        print(La);
        print(Lb);
        L=mergeTwoLists(La,Lb);
        print(L);
        return 0;
    }
    /*
    将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 --归并法。
    */
    #include<stdio.h>
    #include<malloc.h>
    #include<string.h>
    #include<stdlib.h>
    #include<math.h>
    #include<string.h>
    #include <iostream>
    typedef struct node{
        int data;
        struct node *next;
    }LinkList;
    void print(LinkList *L){
        LinkList *p=L->next;
        while(p){
            printf("%d ",p->data);
            p=p->next;
        }
        printf("
    ");
    }
    void create(LinkList *&L,int str[],int n){
        LinkList *r,*s;
        L=(LinkList*)malloc(sizeof(LinkList));
        r=L;
        int i;
        for(i=0;i<n;i++){
            s=(LinkList*)malloc(sizeof(LinkList));
            s->data=str[i];
            r->next=s;
            r=s;
        }
        r->next=NULL;
    }
    void un(LinkList *&L,LinkList *LA,LinkList *LB){
        L=(LinkList*)malloc(sizeof(LinkList));
        LinkList *pa=LA->next,*pb=LB->next,*r=L,*s;
        while(pa&&pb){
            if(pa->data<pb->data){
                s=(LinkList*)malloc(sizeof(LinkList));
                s->data=pa->data;
                r->next=s;
                r=s;
                pa=pa->next;
            }else{
                s=(LinkList*)malloc(sizeof(LinkList));
                s->data=pb->data;
                r->next=s;
                r=s;
                pb=pb->next;
            }
        }
        while(pa){
            s=(LinkList*)malloc(sizeof(LinkList));
            s->data=pa->data;
            r->next=s;
            r=s;
            pa=pa->next;
        }
        while(pb){
            s=(LinkList*)malloc(sizeof(LinkList));
            s->data=pb->data;
            r->next=s;
            r=s;
            pb=pb->next;
        }
        r->next=NULL;
    
    
    }
    int main()
    {
        LinkList *L,*LA,*LB;
        int i,lena,lenb;
        scanf("%d",&lena);
        int numa[lena];
        for(i=0;i<lena;i++){
            scanf("%d",&numa[i]);
        }
        create(LA,numa,lena);
    
        scanf("%d",&lenb);
        int numb[lenb];
        for(i=0;i<lenb;i++){
            scanf("%d",&numb[i]);
        }
        create(LB,numb,lenb);
    
        un(L,LA,LB);
    
    
        print(L);
        return 0;
    }
    

      

  • 相关阅读:
    代理与反向代理
    Spring Batch 远程分区和远程分块的区别
    XWIKI部署安装
    想写一些与技术无关的
    1104报表
    ARQC与ARPC的生成和校验方法
    学习开源框架的一些总结
    linux java -version 和 javac -version 不一致
    spring boot 概念
    Unable to open socket file: target process not responding or HotSpot VM not loaded
  • 原文地址:https://www.cnblogs.com/zhaohuan1996/p/12545172.html
Copyright © 2020-2023  润新知