PTA数据结构春季班第二单元

这篇博客介绍了如何设计函数计算两个一元多项式的乘积与和。输入包含两个多项式非零项的个数及系数与指数,输出以指数递降方式展示结果。乘法运算通过将一个多项式的所有项与另一个多项式的每个项相乘,然后合并,加法运算考虑了同指数系数合并可能为0的情况。特殊情况包括零多项式及其处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二单元习题
设计函数分别求两个一元多项式的乘积与和。

输入格式:
输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。

在这里插入图片描述
情况1,2是常规输入。
加法运算考虑到可能有同指数的系数合并后为0则不输出的情况。
乘法运算是将P1的Num个数分别乘以P2的每个项,然后将这NUM个front指针依次推入一个vector中储存,再进行加法计算合并多项式即可。

注意情况3,结果中有零多项式则输出 0 0。在write()中判断好。
情况4,输入有零多项式,则乘法结果必为零多项式。加法结果为另一个多项式本身。

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <vector>

typedef struct Node* Polynomial;
struct Node
{
   
   
	int coef;
	int expon;
	Polynomial Next;
};

int compare(int a, int b)
{
   
   
	if (a > b) return 1;
	if (a == b) return 0;
	if (a < b) return -1;
}
void Write(Polynomial P)
{
   
   
	if (!P) std::cout << "0 0";
	else {
   
   
		while (P)
		{
   
   
			std::cout << P->coef << " " << P->expon;
			if (P->Next != 0) std::cout << " ";
			P = P->Next;
		}
	}

}

void Attach(int coef, int expon, Polynomial *prear)
{
   
   
	Polynomial P;
	P = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值