//例:
已知集合A和B的元素分别用不含头结点的单链表存储,函数difference( )用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。
typedef struct node
{
int elem;
struct node*next;
}*Lnode;
void Different_Set(Lnode &La,Lnode Lb)//需要在La上进行更改,所以使用引用
{
Lnode pLa,pLb,pre,tmp;
pre=NULL;
pLa=La;
while(pLa)//当La链表没到头的时候
{
pLb=Lb;
while(pLb && pLa->elem != pLb->elem)//LB中没有和LA中相等的元素就继续寻找
{
pLb=pLb->next;
}
if(pLb)
{
if(!pre)//如果LB中和LA中的第一个元素相等了
{
La=pLa->next;//换掉LA中第一个节点
}
else//否则删除当前LA中与LB中相等的元素节点
{
pre->next=pLa->next;
}
tmp=pLa;
pLa=pLa->next;
delete tmp;
}
else
{
pre=pLa;
pLa=pLa->next;
}
}
}
链表编程笔记
最新推荐文章于 2016-11-08 16:49:12 发布