我是想把Lb中的数据归并到La中,有相同的则不归并,Lb链表在算法中不允许破坏
void unionx(linkList &La,linkList Lb)
{
linkList pa,pb,pre;
pre = (linkList)malloc(sizeof(node));
pa = La;
pb = Lb;
La=pre;
// pre = La;
while(pa && pb)
if(pa -> data < pb -> data)
{
pre -> next = pa;
pre = pa;
pa = pa -> next;
}
else if(pa -> data > pb -> data)
{
pre->next=pb;
pre=pb;
pb=pb->next;
}
else
{
pre -> next = pa;
pre = pa;
pa = pa -> next;
pb = pb -> next;
}
pre -> next = pa?pa:pb;
}
问题:其中La = pre和pre = La(程序改成这个就运行不出结果),我不懂这步的操作到底是要进行什么,是什么意思。
很简单.
看代码是 把 La与Lb的合并结果 放到 pre中,
La = pre ; 的意思是 把 La指向将会产生的运算结果处 pre, 这样返回的 La就是 楼主希望的运算结果(合并).
另外具体还需要看 linkList的代码, 因为 =操作可能在 linkList中被重载.