zoukankan      html  css  js  c++  java
  • 两个有序单链表的合并


    ///新建了一个头结点

    #include <stdio.h> #include <stdlib.h> typedef int Elemtype; typedef struct Lnode { Elemtype data; struct Lnode *next; }Lnode, *Linklist; void Create(Linklist *L1) { Lnode *p, *q; int n, x, i; *L1=(Linklist)malloc(sizeof(Lnode)); (*L1)->next=NULL; q=*L1; scanf("%d", &n); for(i=0; i<n; i++) { p=(Lnode *)malloc(sizeof(Lnode)); scanf("%d", &x); p->data=x; q->next=p; q=p; } q->next=NULL; } void Merge(Linklist L1,Linklist L2, Linklist *L) { Lnode *p1, *p2, *p3; p1=L1->next; p2=L2->next; *L=(Linklist)malloc(sizeof(Lnode)); p3=*L; p3->next=NULL; while(p1 && p2) { if(p1->data < p2->data) { p3->next=p1; p3=p3->next; p1=p1->next; } else { p3->next=p2; p3=p3->next; p2=p2->next; } } p3->next=p1?p1:p2; } void TarverseList(Linklist L) { Lnode *p=L->next; if(L->next==NULL) printf("NULL "); while(p) { printf("%d ", p->data); p=p->next; } printf(" "); } int main() { Linklist L1, L2, L; Create(&L1); Create(&L2); Merge(L1, L2, &L); TarverseList(L); return 0; }

    /// 没有新建头结点,利用其中L1或L2的头结点

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef int Elemtype;
    
    typedef struct Lnode
    {
        Elemtype data;
        struct Lnode *next;
    }Lnode, *Linklist;
    
    void Create(Linklist *L1)
    {
        Lnode *p, *q;
        int n, x, i;
    
        *L1=(Linklist)malloc(sizeof(Lnode));
        (*L1)->next=NULL;
    
        q=*L1;
    
        scanf("%d", &n);
        for(i=0; i<n; i++)
        {
            p=(Lnode *)malloc(sizeof(Lnode));
            scanf("%d", &x);
            p->data=x;
            q->next=p;
            q=p;
        }
        q->next=NULL;
    
    }
    
    void Merge(Linklist *L1,Linklist *L2, Linklist *L)
    {
        Lnode *p1, *p2, *p3;
        p1=(*L1)->next;
        p2=(*L2)->next;
        *L=p3=*L1;
    
        while(p1 && p2)
        {
            if(p1->data < p2->data)
            {
                p3->next=p1;
                p3=p3->next;
                p1=p1->next;
            }
            else
            {
                p3->next=p2;
                p3=p3->next;
                p2=p2->next;
            }
        }
    
        p3->next=p1?p1:p2;
        free(*L2);
    }
    
    void TarverseList(Linklist L)
    {
        Lnode *p=L->next;
        if(L->next==NULL)
            printf("NULL
    ");
    
        while(p)
        {
            printf("%d ", p->data);
            p=p->next;
        }
        printf("
    ");
    }
    
    int main()
    {
        Linklist L1, L2, L;
    
         Create(&L1);
         Create(&L2);
         Merge(&L1, &L2, &L);
         TarverseList(L);
    
        return 0;
    }
    View Code
  • 相关阅读:
    极验滑动验证码
    保利威视频播放
    Redis
    DRF 解析器和渲染器
    DRF 分页组件
    DRF 权限和频率
    Nginx反向代理
    Laravel使用反向migrate 和 iseed扩展导出表数据
    psr规范发展历程
    supervisor
  • 原文地址:https://www.cnblogs.com/daydayupacm/p/5914176.html
Copyright © 2011-2022 走看看