
编写使用链表将两个多项式相加的算法
1个回答
关注

展开全部
亲,您好,很高兴为您解答
下面是使用链表将两个多项式相加的算法:1. 定义一个结构体来表示多项式的每一项,包括系数和指数:struct PolyNode { int coef; // 系数 int expon; // 指数 struct PolyNode *next; // 指向下一项的指针};定义一个函数来创建一个多项式链表,输入参数为多项式的项数,返回值为链表的头指针:struct PolyNode *createPoly(int n) { struct PolyNode *head, *tl, *p; head = (struct PolyNode *)malloc(sizeof(struct PolyNode)); head->next = NULL; tl = head; for (int i = 0; i n; i++) { p = (struct PolyNode *)malloc(sizeof(struct PolyNode)); scanf("%d %d", &p->coef, &p->expon); tl->next = p; tl = p; } tl->next = NULL; return head;}


咨询记录 · 回答于2023-06-28
编写使用链表将两个多项式相加的算法
亲,您好,很高兴为您解答
下面是使用链表将两个多项式相加的算法:1. 定义一个结构体来表示多项式的每一项,包括系数和指数:struct PolyNode { int coef; // 系数 int expon; // 指数 struct PolyNode *next; // 指向下一项的指针};定义一个函数来创建一个多项式链表,输入参数为多项式的项数,返回值为链表的头指针:struct PolyNode *createPoly(int n) { struct PolyNode *head, *tl, *p; head = (struct PolyNode *)malloc(sizeof(struct PolyNode)); head->next = NULL; tl = head; for (int i = 0; i n; i++) { p = (struct PolyNode *)malloc(sizeof(struct PolyNode)); scanf("%d %d", &p->coef, &p->expon); tl->next = p; tl = p; } tl->next = NULL; return head;}


亲亲您好~3.定义一个函数来将两个多项式相加,输入参数为两个多项式的头指针,返回值为相加后的多项式的头指针:struct PolyNode *addPoly(struct PolyNode *p1, struct PolyNode *p2) { struct PolyNode *head, *tl, *p; head = (struct PolyNode *)malloc(sizeof(struct PolyNode)); head->next = NULL; tl = head; while (p1 && p2) { if (p1->expon > p2->expon) { p = (struct PolyNode *)malloc(sizeof(struct PolyNode)); p->coef = p1->coef; p->expon = p1->expon; tl->next = p; tl = p; p1 = p1->next; } else if (p1->expon p2->expon) { p = (struct PolyNode *)malloc(sizeof(struct PolyNode)); p->coef = p2->coef; p->expon = p2->expon; tl->next = p; tl = p; p2 = p2->next;
} else { int sum = p1->coef + p2->coef; if (sum != 0) { p = (struct PolyNode *)malloc(sizeof(struct PolyNode)); p->coef = sum; p->expon = p1->expon; tl->next = p; tl = p; } p1 = p1->next; p2 = p2->next; } } while (p1) { p = (struct PolyNode *)malloc(sizeof(struct PolyNode)); p->coef = p1->coef; p->expon = p1->expon; tl->next = p; tl = p; p1 = p1->next; } while (p2) { p = (struct PolyNode *)malloc(sizeof(struct PolyNode)); p->coef = p2->coef; p->expon = p2->expon; tl->next = p; tl = p; p2 = p2->next; } tl->next = NULL; return head;}
亲亲您好~还有第四点哦
4.在主函数中调用上述函数,输入两个多项式的项数和每一项的系数和指数,输出相加后的多项式的每一项的系数和指数:int mn() { int n1, n2; scanf("%d", &n1); struct PolyNode *p1 = createPoly(n1); scanf("%d", &n2); struct PolyNode *p2 = createPoly(n2); struct PolyNode *p = addPoly(p1->next, p2->next); while (p) { printf("%d %d", p->coef, p->expon); p = p->next; } return 0;}

已赞过
评论
收起
你对这个回答的评价是?