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

typedef struct PolyNode *PtrToPolyNode; struct PolyNode { int coef; int expon; PtrToPolyNode next; }; typedef PtrToPolyNode Polynomial;

Polynomial ReadPoly(); Polynomial Add(Polynomial P1, Polynomial P2); void PrintPoly(Polynomial P);

int main() { Polynomial P1, P2, PS; P1 = ReadPoly(); P2 = ReadPoly(); PS = Add(P1, P2); PrintPoly(PS); return 0; }

Polynomial ReadPoly() { Polynomial P, Rear, t; int N, c, e; scanf('%d', &N); P = (Polynomial)malloc(sizeof(struct PolyNode)); P->coef = 0; P->expon = 0; P->next = NULL; Rear = P; while (N--) { scanf('%d %d', &c, &e); t = (Polynomial)malloc(sizeof(struct PolyNode)); t->coef = c; t->expon = e; t->next = NULL; Rear->next = t; Rear = t; } return P; }

Polynomial Add(Polynomial P1, Polynomial P2) { Polynomial P, Rear, t; int sum; P1 = P1->next; P2 = P2->next; P = (Polynomial)malloc(sizeof(struct PolyNode)); P->coef = 0; P->expon = 0; P->next = NULL; Rear = P; while (P1 && P2) { if (P1->expon == P2->expon) { sum = P1->coef + P2->coef; if (sum) { t = (Polynomial)malloc(sizeof(struct PolyNode)); t->coef = sum; t->expon = P1->expon; t->next = NULL; Rear->next = t; Rear = t; } P1 = P1->next; P2 = P2->next; } else if (P1->expon > P2->expon) { t = (Polynomial)malloc(sizeof(struct PolyNode)); t->coef = P1->coef; t->expon = P1->expon; t->next = NULL; Rear->next = t; Rear = t; P1 = P1->next; } else { t = (Polynomial)malloc(sizeof(struct PolyNode)); t->coef = P2->coef; t->expon = P2->expon; t->next = NULL; Rear->next = t; Rear = t; P2 = P2->next; } } while (P1) { t = (Polynomial)malloc(sizeof(struct PolyNode)); t->coef = P1->coef; t->expon = P1->expon; t->next = NULL; Rear->next = t; Rear = t; P1 = P1->next; } while (P2) { t = (Polynomial)malloc(sizeof(struct PolyNode)); t->coef = P2->coef; t->expon = P2->expon; t->next = NULL; Rear->next = t; Rear = t; P2 = P2->next; } return P; }

void PrintPoly(Polynomial P) { if (!P->next) { printf('0 0\n'); return; } while (P->next) { P = P->next; printf('%d %d', P->coef, P->expon); if (P->next) { printf(' '); } } printf('\n'); }


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

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