小白不太会用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 · 访问量 43
私信
关注