有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除

有双向循环链表结点定义为:

struct node 
{ int data; 
struct node *front,*next; 
}; 

有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除


BOOL DeteleNode(Node *pHeader, DataType Value) 
{ 
    if (pHeader == NULL) return; 
    BOOL bRet = FALSE; 
    Node *pNode = pHead; 
    while (pNode != NULL) 
    { 
        if (pNode->data == Value) 
        { 
            if (pNode->front == NULL) 
            {    
                pHeader = pNode->next; 
                pHeader->front = NULL; 
            } 
            else 
            { 
                if (pNode->next != NULL) 
                { 
                    pNode->next->front = pNode->front; 
                } 
                pNode->front->next = pNode->next; 
            } 
            Node *pNextNode = pNode->next; 
            delete pNode; 
            pNode = pNextNode; 
            bRet = TRUE; 
//不要break或return, 删除所有 
        } 
        else 
        { 
            pNode = pNode->next; 
        } 
    } 
    return bRet; 
} 

void DE(Node *pHeadA, Node *pHeadB) 
{ 
    if (pHeadA == NULL || pHeadB == NULL) 
    { 
        return; 
    } 
    Node *pNode = pHeadA; 
    while (pNode != NULL) 
    {   
        if (DeteleNode(pHeadB, pNode->data)) 
        { 
            if (pNode->front == NULL) 
            { 
                pHeadA = pNode->next; 
                pHeadA->front = NULL; 
            } 
            else 
            { 
                pNode->front->next = pNode->next; 
                if (pNode->next != NULL) 
                { 
                    pNode->next->front = pNode->front; 
                }    
            } 
            Node *pNextNode = pNode->next; 
            delete pNode; 
            pNode = pNextNode; 
        } 
        else 
        { 
            pNode = pNode->next; 
        } 
    }        
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值