谁能帮我解决一下这个 多项式相加 的 相加函数 解释一下 不知道怎么改
#include <stdio.h>#include <stdlib.h>
#include <time.h>
typedef int mytype;
typedef struct Node
{
mytype xi;
mytype zhi;
Node *next;
}PNode,*PList;
void initPList(PList &L,int n)
{
L=(PList)malloc(sizeof(PNode));
L->next=NULL;
PList p=L;
for(int i=0;i<n;i++)
{
PList s=(PList)malloc(sizeof(PNode));
s->xi=rand()%23-30;
s->zhi=i;
p->next=s;
s->next=NULL;
p=s;
}
}
void printPList(PList L)
{
PList p=L->next;
while(p)
{
printf("%dx%d",p->xi,p->zhi);
p=p->next;
}
printf("\n");
}
void addPList(PList LA,PList LB)
{
PList p=LA->next;
PList q=LB->next;
PList s=LB;
while(p&&q)
{
if(p->zhi<q->zhi)
{
s->next=p;
s=p;
p=p->next;
}
if(p->zhi>q->zhi)
{
s->next=q;
s=q;
q=q->next;
}
if(p->zhi=q->zhi)
{
mytype sum;
sum=p->xi+q->xi;
if(sum!=0)
{
q->xi=sum;
s=q;
s->next=q;
q=q->next;
p=p->next;
}
else
{
q=q->next;
p=p->next;
}
}
}
s->next=p?p:q;
}
int main()
{
PList PLA,PLB;
initPList(PLA,6);
initPList(PLB,8);
printPList(PLA);
printPList(PLB);
addPList(PLA,PLB);
printPList(PLB);
}