#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string.h>
using namespace std;
typedef struct LinkNode
{
int data;
struct LinkNode *next;
}LinkNode;
void InitList(LinkNode *&L)
{
L=(LinkNode*)malloc(sizeof(LinkNode));
L->next=NULL;
}
void CreatList(LinkNode *&L,int a[],int n)
{
LinkNode *p;
L=(LinkNode*)malloc(sizeof(LinkNode));
L->next=NULL;
for (int i=0;i<n-1;i++)
{
p=(LinkNode*)malloc(sizeof(LinkNode));
p->data=a[i];
p->next=L->next;
L->next=p;
}
}
void DisList1(LinkNode *L)
{
LinkNode *p=L->next;
printf("L1->");
while(p!=NULL)
{
printf("\t%d",p->data);
p=p->next;
}
printf("\n");
}
void DisList2(LinkNode *L)
{
LinkNode *p=L->next;
printf("L2->");
while(p!=NULL)
{
printf("\t%d",p->data);
p=p->next;
}
printf("\n");
}
void sort(LinkNode *&L)
{
LinkNode *p,*pre,*q;
p=L->next->next;
L->next->next=NULL;
while(p!=NULL)
{
q=p->next;
pre=L;
while(pre->next!=NULL&&pre->next->data<p->data)
{
pre=pre->next;
}
p->next=pre->next;
pre->next=p;
p=q;
}
}
void connect(LinkNode *L1,LinkNode *L2)
{
LinkNode *L3;
L3=(LinkNode*)malloc(sizeof(LinkNode));
LinkNode *s=L3->next;
LinkNode *p=L1->next;
while(p!=NULL)
{
int flag=0;
LinkNode *q=L2;
while(q!=NULL)
{
if(p->data==q->data)
{
flag=1;
break;
}
q=q->next;
}
if(flag==1)
{
s->data=p->data;
s=s->next;
}
p=p->next;
}
printf("L4->");
LinkNode *pre;
pre=L3->next;
while(pre!=NULL)
{
printf("%d\t",pre->data);
pre=pre->next;
}
}
int main()
{
LinkNode *L1,*L2,*L3;
int a[100],b[100];
int m=0,n=0;
char c=' ';
char d=' ';
while(c!='\n')
{
scanf("%d",&a[m]);
c=getchar();
m++;
}
while(d!='\n')
{
scanf("%d",&b[n]);
d=getchar();
n++;
}
CreatList(L1,a,m);
CreatList(L2,b,n);
sort(*&L1);
sort(*&L2);
DisList1(L1);
DisList2(L2);
connect(L1,L2);
求交集的函数是connect函数,调试了好多遍都还是不行,累觉不爱,请各位神仙帮帮我,到底是哪里出错了?万般感恩。