資料結構筆記(三)
阿新 • • 發佈:2018-12-13
一元多項式相加
struct PolyNode{ int coef; int exp; struct PolyNode *next; }; typedef struct PolyNode *Polynomial; Polynomial P1,P2; Polynomial PolyAdd(Polynomial P1,Polynomial P2){ Polynomial front,rear,temp; int sum; rear=(Polynomial)malloc(sizeof(struct PolyNode)); while(P1&&P2){ switch(Compare(P1->coef,P2->coef){ case 1: Attach(P1->coef,P1->exp,&rear); P1=P1->next; break; case -1: Attach(P2->coef,P2->exp,&rear); P2=P2->next; break; case 0: sum=P1->coef+P2->coef; if(sum) Attach(sum,P1->exp,&rear); P1=P1->next; P2=P2->next; break; } } for(;P1;P1=P1->next) Attach(P1->coef,P1->exp,&rear); for(;P2;P2=P2->next) Attach(P2->coef,P2->exp,&rear); rear->next=NULL; temp=front; front=front->next; free(temp); return front; } void Attach(int c,int e,Polynomial *pRear){ Polynomial P; P=(Polynomial)malloc(sizeof(struct Polynomial)); P->coef=c; P->expon=e; P->next=NULL; (*pRear)->next=P; *pRear=P; }