#include<stdio.h>
#include<malloc.h>
typedef struct lianbiao *List;
struct lianbiao{//格式
int data;
List next;
};
List create(List L);
List jiaoji(List L1,List L2);
int main(){
List L1,L2;
L1=create(L1);
L2=create(L2);
List p=jiaoji(L1,L2);
int flag=0;
while(p!=NULL){
if(flag==0){
printf("%d",p->data );
flag=1;
}
else printf(" %d",p->data );
p=p->next ;
}
return 0;
}
List create(List L){
L=NULL;
List tail=NULL,p;
while(1){
p=(List)malloc(sizeof(struct lianbiao));
p->next =NULL;
scanf("%d",&p->data );
if(p->data ==-1){
//free(p);
break;
}
if(L==NULL)L=p;
else
tail->next =p;
tail=p;
}
return L;
}
List jiaoji(List L1,List L2){
List p1=L1,p2=L2,p;
List head=NULL,tail=NULL;
if(p1==NULL||p2==NULL){
printf("NULL");
return NULL;
}
while(p1!=NULL&&p2!=NULL){
if(p1->data < p2->data )p1=p1->next ;
if(p1->data >p2->data )p2=p2->next ;
if(p1->data ==p2->data ){
p=p1;
if(head==NULL)head=p;
else tail->next =p;
tail=p;
p1=p1->next ;//
p2-p2->next ;//
}
}
tail->next =NULL;//
return head;
}
交集为空,一方为空则为空啊,这样处理有什么不对啊?对于大规模数据最多也是运行超时啊,怎么会出现答案错误呢?实在是没搞明白。