链表编程笔记

来源:互联网 发布:汉以强亡 知乎 编辑:程序博客网 时间:2024/06/08 06:15
//例:已知集合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;        }    }}
0 0
原创粉丝点击