稀疏多项式相加,不知道哪里有错

谁知道这个稀疏多项式相加函数哪里有错
void Add_Ployn2(Ploynomial& P1,Ploynomial& P2){
PNode*p1,p2,p3;
p1=P1->next;
p2=P2->next;
p3=P1;
while(P1&&P2){
if(p1->expen==p2->expen){
p1->coef=p1->coef+p2->coef;
if(p1->coef==0){
PNode
d1;
d1=p1;
p1=p1->next;
delete d1;
d1=p2;
p2=p2->next;
delete p2;
}
else{
PNode
d1;
p3->next=p1;
p3=p1;
p1=p1->next;
d1=p2;
p2=p2->next;
delete d1;

        }
    }
    else if(p1->expen<p2->expen){
        p3->next=p1;
        p3=p1;
        p1=p1->next;
    }
    else{
        p3->next=p2;
        p3=p2;
        p2=p2->next;
    }
}
if(p1==NULL&&p2==NULL)
;
else if(p1==NULL)
p3->next=p2;
else
p3->next=p1;
//delete P2;

}

while(P1&&P2){
改为
while(p1&&p2){
P1和P2都没有被修改,不成死循环了么