小白C语言Leetcode————23.合并连个有序链表。

小白不太会用leetcode,上交的代码总是运行失败,只能自己在codeblock上运行试试。有许多地方写的不太规范,在此记录,希望以后继续努力。

#include<stdio.h>
#include<stdlib.h>

#define LEN sizeof(struct listnode)
typedef struct listnode{
               int data;
               struct listnode *next;
               }listnode,*linklist;
int main()
{
       linklist merge(linklist l1,linklist l2),p1,p2,m;
       linklist creat();
       printf("请输入链表p1的值:");
       p1=creat();
       printf("请输入链表p2的值:");
       p2=creat();
       printf("输出合并链表m的值:");
       m=merge(p1,p2);
       while(m!=NULL)
       {
               printf("%d\t",m->data);
               m=m->next;
       }
       return 0;
}

linklist merge(linklist l1,linklist l2)
{
        linklist head=(linklist)malloc(sizeof(LEN)),s;
        s=head;
        while(l1!=NULL&&l2!=NULL)
        {
               if(l1->data<l2->data)
               {
                     s->next=l1;
                     l1=l1->next;
               }
               else
               {
                     s->next=l2;
                     l2=l2->next;
               }
               s=s->next;
         }
         if(l1!=NULL)
         {
             s->next=l1;
             s=s->next;
         }
         else
         {
             s->next=l2;
             s=s->next;
         }
         s->next=NULL;
         return head->next;
}


linklist creat(linklist L)         //此处L为头指针,L所代表的节点没有赋值。因此要返回L的next指针。
{
    linklist s,r;
    int x;
    L=(linklist)malloc(sizeof(LEN));
    r=L;
    scanf("%d",&x);
    while(x!=9999)
    {
        s=(linklist)malloc(sizeof(LEN));
        s->data=x;
        r->next=s;
        r=s;
        scanf("%d",&x);
    }
    r->next=NULL;
    return L->next;
}

发布了1 篇原创文章 · 获赞 0 · 访问量 41

猜你喜欢

转载自blog.csdn.net/qq_44785633/article/details/104206103