攻击自己做的网站吗,静态网站管理系统,网站怎么做返回主页按钮,如何对网站管理多项式加法运算
我们准备采用不带头节点的单向链表结构表示一元多项式#xff0c;并按照指数递减的顺序排列各项。
对列表存放的两个多项式进行加法运算时#xff0c;可以使用两个指针p1和p2。初始时的p1和p2分别指向这两个多项式第1个节点#xff08;指数的最高项#x…多项式加法运算
我们准备采用不带头节点的单向链表结构表示一元多项式并按照指数递减的顺序排列各项。
对列表存放的两个多项式进行加法运算时可以使用两个指针p1和p2。初始时的p1和p2分别指向这两个多项式第1个节点指数的最高项。通过循环不断比较p1和p2所指的节点比较结果为以下三种情况之一并作不同处理。
两数据项指数相等 若结果不为0将结果对应的系数连同指数一并存入结果多项式。沿着两结点的链域使P1和P2分别指向两个多项式的下一项再进行新一轮比较。P1中的数据项指数较大 P2保持不变把P1的当前项存入多项式P1指向下一项。P2中的数据项指数较大 P1保持不变把P2的当前项存入多项式P2指向下一项。
代码实现
typedef struct PolyNode* PtrToPolyNode;
struct PolyNode {int Coef;int Expon;PtrToPolyNode Next;
};
typedef PtrToPolyNode Polynomial;int compare(int e1, int e2) {if (e1 e2) {return 1;}else if(e1 e2){return -1;}else{return 0;}
}void Attach(int ceof, int expon, Polynomial* PtrRear) {Polynomial t;t-Expon expon;t-Coef ceof;t-Next NULL;(*PtrRear)-Next t;*PtrRear t;
}Polynomial PolyAdd(Polynomial P1, Polynomial P2) {Polynomial front, rear;rear (Polynomial)malloc(sizeof(struct PolyNode));front rear;while (P1 P2) {switch (compare(P1-Expon, P2-Expon)){case 1:Attach(P1-Coef, P1-Expon, rear);P1 P1-Next;break;case -1:Attach(P2-Coef, P2-Expon, rear);P2 P2-Next;break;case 0:int sum P1-Coef P2-Coef;if (sum) {Attach(sum, P1-Expon, rear);P1-Next;P2-Next;break;}}}for (; P1; P1 P1-Next) {Attach(P1-Coef, P1-Expon, rear);}for (; P2; P2 P2-Next) {Attach(P2-Coef, P2-Expon, rear);}rear-Next NULL;Polynomial temp front;front front-Next;free(temp);return front;}