#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *Next;
}List;
void List_intersection(List *L1,List *L2)
{
List *L=(List*)malloc(sizeof(List));
L->Next=NULL;
List *p,*q,*r;
r=(List*)malloc(sizeof(List));
r=L;
p=L1;
q=L2;
while(p)
{
while(q)
{
if(p->data==q->data)
{
L->Next=p;
L=L->Next;
break;
}
q=q->Next;
}
q=L2;
p=p->Next;
}
if(r->Next==NULL)
{
printf("NULL");
}
else
{
r=r->Next;
while(r->Next!=NULL)
{
printf("%d ",r->data);
r=r->Next;
}
printf("%d",r->data);
}
}
void List_creat(List **head,List *pnew)
{
List *pmov=*head;
if(*head==NULL)
{
*head=pnew;
pnew->Next=NULL;
}
else{
while(pmov->Next!=NULL)
{
pmov=pmov->Next;
}
pmov->Next=pnew;
pnew->Next=NULL;
}
}
int main()
{
List *L1=NULL;
List *L2=NULL;
List *pmov1,*pmov2;
int i1,i2;
while(scanf("%d",&i1)&&i1>0){
pmov1=(List*)malloc(sizeof(List));
pmov1->data=i1;
List_creat(&L1,pmov1);
}
while(scanf("%d",&i2)&&i2>0){
pmov2=(List*)malloc(sizeof(List));
pmov2->data=i2;
List_creat(&L2,pmov2);
}
List_intersection(L1,L2);
return 0;
}
大数据输入即最后一个节点没过,应该是两个while循环的时候超时了。
不知道咋解决,会的大佬帮我看看。谢谢啦