题目是:
已知两个链表A和B分别表示两个集合,其元素递增有序。设计一个算法从A和B的交集,并存放在A中。
我的思路是,先找到A的尾节点,然后如果相同把B中的这个相同的元素插到尾节点后面,然后再让A直接指向原来的尾节点,但是程序一直奔溃,很苦恼求大神帮,我的代码如下。
void Get_Common_LinkList(LinkList &L1,LinkList &L2)
{
LinkList p,q;
LinkList temp;
LinkList rearL1=Find_Rear(L1);
p=L1->next;
q=L2->next;
while(q!=NULL&&(p!=rearL1->next))
{
if(p->data<q->data)
{
p=p->next;
}
else if(q->data<p->data)
{
q=q->next;
}
else
{
temp=q;
p=p->next;
q=q->next;
temp->next=rearL1->next;
rearL1->next=temp;
}
}
L1->next=rearL1->next;
}
已知两个链表A和B分别表示两个集合,其元素递增有序。设计一个算法从A和B的交集,并存放在A中。
我的思路是,先找到A的尾节点,然后如果相同把B中的这个相同的元素插到尾节点后面,然后再让A直接指向原来的尾节点,但是程序一直奔溃,很苦恼求大神帮,我的代码如下。
void Get_Common_LinkList(LinkList &L1,LinkList &L2)
{
LinkList p,q;
LinkList temp;
LinkList rearL1=Find_Rear(L1);
p=L1->next;
q=L2->next;
while(q!=NULL&&(p!=rearL1->next))
{
if(p->data<q->data)
{
p=p->next;
}
else if(q->data<p->data)
{
q=q->next;
}
else
{
temp=q;
p=p->next;
q=q->next;
temp->next=rearL1->next;
rearL1->next=temp;
}
}
L1->next=rearL1->next;
}