1068: 多项式相加

数据结构多项式相加

题目描述

一条单链表可以表示一个一元多项式,每个节点包含三个域:指数、系数和后继节点(指针或引用)。表示多项式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
#include
#include
#include
#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;
}

你可能感兴趣的:(数据结构洛谷刷题,c++,数据结构,算法)