c语言 求两个多项式的乘积(1)编写函数实现一个多项式的输入,返回多项式链表的头指针。(2)编写函数实现两个多项式相乘,返回结果多项式链表的头指针。(3)编写函数输出一个多项式的二元组序列。(4)在main函数中分别调用上述函数,实现输入两个多项式,求出它们的乘积并输出结果。
时间: 2024-02-22 14:57:33 浏览: 81
一元多项式的相乘(C链表实现).
以下是实现多项式乘法的C语言代码,包含输入多项式、相乘、输出二元组序列和主函数调用:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct PolyNode *PtrToPolyNode;
struct PolyNode {
int coef; // 系数
int expon; // 指数
PtrToPolyNode next; // 指向下一项的指针
};
typedef PtrToPolyNode Polynomial;
// 函数声明
Polynomial ReadPoly();
Polynomial Mult(Polynomial P1, Polynomial P2);
void PrintPoly(Polynomial P);
int main()
{
Polynomial P1, P2, PP;
// 输入多项式P1
printf("请输入第一个多项式:\n");
P1 = ReadPoly();
// 输入多项式P2
printf("请输入第二个多项式:\n");
P2 = ReadPoly();
// 计算P1和P2的乘积PP
PP = Mult(P1, P2);
// 输出PP的二元组序列
printf("两个多项式的乘积为:\n");
PrintPoly(PP);
return 0;
}
// 实现读入多项式的函数
Polynomial ReadPoly()
{
int N, c, e;
Polynomial P, Rear, temp;
// 创建一个空链表
P = (Polynomial)malloc(sizeof(struct PolyNode));
P->next = NULL;
Rear = P;
// 读入项数
scanf("%d", &N);
// 读入每一项的系数和指数
while (N--)
{
scanf("%d %d", &c, &e);
// 如果系数为0,则不需要创建新的项
if (c == 0)
{
continue;
}
// 创建新的项
temp = (Polynomial)malloc(sizeof(struct PolyNode));
temp->coef = c;
temp->expon = e;
temp->next = NULL;
// 将新的项插入链表的尾部
Rear->next = temp;
Rear = temp;
}
// 删除空链表的头结点
temp = P;
P = P->next;
free(temp);
return P;
}
// 实现多项式乘法的函数
Polynomial Mult(Polynomial P1, Polynomial P2)
{
Polynomial P, Rear, t1, t2, temp;
// 创建一个空链表
P = (Polynomial)malloc(sizeof(struct PolyNode));
P->next = NULL;
Rear = P;
// 如果P1或P2为空,则返回空链表
if (!P1 || !P2)
{
return P;
}
// 计算乘积
for (t1 = P1; t1; t1 = t1->next)
{
for (t2 = P2; t2; t2 = t2->next)
{
// 创建新的项
temp = (Polynomial)malloc(sizeof(struct PolyNode));
temp->coef = t1->coef * t2->coef;
temp->expon = t1->expon + t2->expon;
temp->next = NULL;
// 将新的项插入链表的尾部
Rear->next = temp;
Rear = temp;
}
}
// 删除空链表的头结点
temp = P;
P = P->next;
free(temp);
return P;
}
// 实现输出多项式的函数
void PrintPoly(Polynomial P)
{
if (!P)
{
printf("0 0\n");
return;
}
printf("%d %d", P->coef, P->expon);
P = P->next;
while (P)
{
printf(" %d %d", P->coef, P->expon);
P = P->next;
}
printf("\n");
}
```
其中,`ReadPoly` 函数用于读入多项式,`Mult` 函数用于计算两个多项式的乘积,`PrintPoly` 函数用于输出多项式的二元组序列。在主函数中,依次调用这三个函数即可实现输入两个多项式、求它们的乘积并输出结果的功能。
阅读全文