请各位大侠高手看一下到底那错了(合并单链表)
#include<iostream.h>#define Num struct num
struct num{
int n;
Num *next;
};
Num *creat(int n)// 链表的创建
{
cout<<"输入链表元素:";
Num *head,*pb,*pf;
for(int i=1;i<=n;i++)
{
pb=new Num;
cin>>pb->n;
if(i==1)
pf=head=pb;
else
pf->next=pb;
pb->next=NULL;
pf=pb;
}
return head;
}
Num *get(Num *head,int n)//取链表中的元素
{
Num *pb=head;
for(int i=1;i<n;i++)
pb=pb->next;
return pb;
}
bool compare(Num *head,Num *p)//判断此链表中是否含有P元素
{
Num *pb=head;
while(pb->n!=p->n&&pb->next!=NULL)
pb=pb->next;
if(pb->n==p->n)
return false;
if(pb->n!=p->n&&pb->next==NULL)
return true;
}
void insert(Num *&head,Num *p)//将P元素加到链表的未尾
{
Num *pb=head;
while(pb->next!=NULL)
pb=pb->next;
pb->next=p;
p->next=NULL;
pb=p;
}
void main()
{
int a,b;
Num *la,*lb;
cout<<"输入la链表的长度:";
cin>>a;
la=creat(a);
cout<<"输入lb链表的长度:";
cin>>b;
lb=creat(b);
Num *p;
for(int i=1;i<=b;i++)
{
p=get(lb,i);
if(compare(la,p))
insert(la,p);
}
Num *pb=la;
cout<<"合并后的链表元素有:";
while(pb!=NULL)
{
cout<<pb->n<<'\t';
pb=pb->next;
}
cout<<endl;
}