02-线性结构2 一元多项式的乘法与加法运算 (20分)
设计函数分别求两个一元多项式的乘积与和。
输入格式:
输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。
输入样例:
4 3 4 -5 2 6 1 -2 0
3 5 20 -7 4 3 1
输出样例:
15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
5 20 -4 4 -5 2 9 1 -2 0
链表做法 大神版做法
链表做法
#include<bits/stdc++.h>
using namespace std;
typedef struct Node{
int coef;
int exp;
struct Node *next;
}*List;
List read(List L){
List s=NULL,temp;
L=(List)malloc(sizeof(struct Node));
temp=L;
int n,COEF,EXP;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>COEF>>EXP;
if (COEF!=0)
{
s=(struct Node*)malloc(sizeof(struct Node));
s->coef=COEF;
s->exp=EXP;
L->next=s;
L=s;
}
}L->next=NULL;
return temp;
}
void print(List L)
{
int num=0,temp=0;
List val=L;
//temp用来统计L里有多少个元素
while(val->next)
{
temp++;
val=val->next;
}
if (L->next!=NULL)
{
while(L->next){
if(L->next->coef!=0){
cout<<L->next->coef<<" "<<L->next->exp;
List val=L->next;
/*为了找到下一个系数不为0的项,,没有就换行,有就打空格*/
while(val->next&&val->next->coef==0)
{
val=val->next;
}
/*只有两种情况*/
if (val-