struct PolyNode {
int coef; //系数
int expon; //指数
struct PolyNode *link; //指向下一个节点的指针
} *Polynomial;
Polynomial PolyAdd(Polynomial P1, Polynomial P2) {
Polynomial front, rear, temp;
int sum;
rear = (Polynomial)malloc(sizeof(struct PolyNode));
front = rear; //由front记录多项式链表头结点
while(P1&&P2) { //当两个多项式都有非零项待处理时
switch(Compare(P1->expon, P2->expon)) {
case 1:
Attach(P1->coef, P1->expon, &rear);
P1 = P1->link;
break;
case -1:
Attach(P2->coef, P2->expon, &rear);
P2 = P2->link;
break;
case 0:
sum = P1->coef + P2->coef;
if (sum) {
Attach(sum, P1->expon, &rear);
}
P1 = P1->link;
P2 = P2->link;
break;
}
for(;P1;P1 = P1->link) { //将未处理完的另一个多项式的所有结点一次复制到结果多项式中去
Attach(P1->coef, P1->expon, &rear);
}
for(;P2;P2 = P2->link) {
Attach(P2->coef, P2->expon, &rear);
}
rear->link = NULL;
temp = front;
front = front->link; //令front指向结果多项式第一个非零项
free(temp); //释放临时空表头结点
return front;
}
}
void Attach(int c, int e, Polynomial *pRear) {
Polynomial P;
P = (Polynomial)malloc(sizeof(struct PolyNode));
P->coef = c; // 对新结点赋值
P->expon = e;
P->link = NULL;
(*pRear)->link = P;
*pRear = P; //修改pRear的值
}
多项式
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 2016年11月7日下午,市教研中心高中语文名师工作坊在包钢四中举行了基于课标的教学第一期课堂实践研讨活动。 活动...