一元多项式求和

来源:互联网 发布:eviews导入excel数据 编辑:程序博客网 时间:2024/05/17 10:07

在数学上,一个一元多项式可按升幂表示


一个一元多项式的非零项是由系数和指数唯一表示。在这里我们采用单链表存储,则每一个非零项对应链表中的一个节点,且单链表应按指数递增有序排列。

节点结构如下:

coefexpnext

struct Node{      int coef;      int exp;      Node* next;};

一元多项式求和就是合并同类项的过程。设单链表A和单链表B存储两个多项式,多项式求和结果存储在单链表A中。

void Add(Linklist& A, Linklist B){Node* pre = A.first;Node* p = pre->next;Node* qre = B.first;Node* q = qre->next;while (p != NULL&&q != NULL){if (p->exp < q->exp)    //单链表A中节点p应为结果链表中的一个节点,将指针p后移{pre = p;p = p->next;}if (p->exp > q->exp)   //单链表B中节点q应为结果链表中的一个节点,将q插到节点p之前,并将指针q指向下一个节点{Node* v = q->next;pre->next = q;q->next = p;q = v;}if (p->exp = q->exp)  // 合并同类项,系数相加{p->coef = p->coef + q->coef;if (p->coef != 0)  //若系数为不为0,后移相关指针{pre = p;p = p->next;}else            //若系数为0,则删除节点p{pre->next = p->next;delete p;p = pre->next;}qre->next = q->next;     //删除节点qdelete q;q = q->next;}if (q != NULL)      //若单链表B后还有元素,则链接在单链表A之后pre->next = q;delete B.first;}


0 0