#include #include <stdio.h> #include <stdlib.h>

typedef struct { float coef; int expn; } term, ElemType; typedef struct LNode { ElemType data; struct LNode* next; } LNode, * Link, * polynmial;

void CreatPolyn(polynomail& P, int m); void DestroyPolyn(polynomail& P); void PrintPolyn(polynomail P); void AddPolyn(polynomial& Pa, polynomial& Pb);

int main() { polynomail P1, P2; CreatPolyn(P1, 3); CreatPolyn(P2, 4); std::cout << "P1: "; PrintPolyn(P1); std::cout << "P2: "; PrintPolyn(P2); AddPolyn(P1, P2); std::cout << "P1+P2: "; PrintPolyn(P1); DestroyPolyn(P1); DestroyPolyn(P2); return 0; }

void CreatPolyn(polynomail& P, int m) { P = (LNode*)malloc(sizeof(LNode)); P->next = NULL; Link rear = P; for (int i = 0; i < m; i++) { Link p = (Link)malloc(sizeof(LNode)); std::cin >> p->data.coef; std::cin >> p->data.expn; p->next = NULL; rear->next = p; rear = p; } }

void DestroyPolyn(polynomail& P) { Link p = P->next; while (p) { free(P); P = p; p = p->next; } free(P); }

void PrintPolyn(polynomail P) { Link p = P->next; while (p) { std::cout << p->data.coef << "x^" << p->data.expn << "+"; p = p->next; } std::cout << std::endl; }

void AddPolyn(polynomial& Pa, polynomial& Pb) { Link ha = Pa, hb = Pb; Link qa = Pa->next, qb = Pb->next; while (qa && qb) { ElemType a = qa->data, b = qb->data; switch (a.expn - b.expn) { case -1: ha = qa; qa = qa->next; break; case 0: float sum = a.coef + b.coef; if (sum != 0) { qa->data.coef = sum; ha = qa; } else { ha->next = qa->next; free(qa); qa = ha->next; } hb->next = qb->next; free(qb); qb = hb->next; break; case 1: hb->next = qb->next; qb->next = qa; ha->next = qb; ha = qb; qb = hb->next; break; } } if (qb) ha->next = qb; free(Pb);

C++ 多项式加法运算:链式存储结构实现

原文地址: https://www.cveoy.top/t/topic/mIpL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录