我试着创建第三个链表,将两个链表中相等的数放入该链表中并且输出,但是得不到输出结果
这是我的整段代码
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}Node,Linklist;
void Initlist(Linklist &L)//初始化链表
{
L=(Node)malloc(sizeof(Node));
L->next=NULL;
}
void tail_insert(Linklist &L)//尾插法建立链表
{
int i,j;
printf("输入要创建的链表的长度:");
scanf("%d",&i);
Node *r,*s;
r=L;
for(j=1;j<=i;j++)
{
s=(Node *)malloc(sizeof(Node));
scanf("%d",&s->data);
r->next=s;
r=s;
}
r->next=NULL;
}
void showlist(Linklist &L)//将链表输出
{
Node *p;
p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
int length(Linklist &L)//求其长度
{
Node *p;
p=L->next;
int length=0;
while(p!=NULL)
{
length++;
p=p->next;
}
return length;
}
void intersection(Linklist &LA,Linklist &LB)
{
Node *s,*p,*r;
Linklist LC;
Initlist(LC);
p=LB->next;
r=LC;
while(p!=NULL)
{
s=LA->next;
while(s!=NULL)
{
if(s->data==p->data)
{
Node *m=(Node *)malloc(sizeof(Node));
m->data=s->data;
r->next=m;
r=m;
}
else
s=s->next;
}
p=p->next;
}
r->next=NULL;
showlist(LC);
}
int main()
{
int m,n;
Linklist LA,LB;
Initlist(LA);
Initlist(LB);
tail_insert(LA);
tail_insert(LB);
showlist(LA);
printf("\n");
showlist(LB);
m=length(LA);
n=length(LB);
printf("\n");
printf("%d\n%d",m,n);
intersection(LA,LB);
}