数据结构多项式相加
题目描述
一条单链表可以表示一个一元多项式,每个节点包含三个域:指数、系数和后继节点(指针或引用)。表示多项式3X4-6X2+5X-10的单链表如图所示。给定两个多项式,实现两个多项式相加算法。
输入格式
第一行输入包含两个整数m,n
后续为m行和n行数据
m,n分别代表两个多项式的项数
后续每一行代表多项式的项,包含a,b两个数据,表示该项的系数和指数。
输出格式
从较高指数到较低指数,依次输出求得的和。
每行一项,格式与输入相同,但无需输出项数,系数为0的项也不输出。
输入样例
2 3
1 2
1 1
2 2
1 1
2 0
输出样例
3 2
2 1
2 0
解题思路
一,数据初始化
二,用数据次数作为下标,系数进行存储
三,挨个相加,不为0的输出
示例代码
#include<iostream>
#include<math.h>
#include<string.h>
#include<algorithm>
#define N 20
using namespace std;
struct node {
int a[20];
};
int main() {
int i,n, m;
int number1, number2;
node pr, pe, pt;
cin >> n >> m;
for (int i = 0; i < N; i++) {
pr.a[i] = 0;
pe.a[i] = 0;
pt.a[i] = 0;
}
for (int i = 0; i < n; i++) {
cin >> number1 >> number2;
pr.a[number2] = number1;
}
for (int j = 0;j < m; j++) {
cin >> number1 >> number2;
pe.a[number2] = number1;
}
for (i = N-1; i >= 0; i--) {
pt.a[i] = pr.a[i] + pe.a[i];
if (pt.a[i] != 0) {
cout << pt.a[i] << " " << i << endl;
}
}
return 0;
}