前言
本次课程地址:https://www.bilibili.com/video/av78358478。多项式加法主要实现的就是将两个多项式相加的结果计算并显示出来,使用链表来实现。。
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目描述
实现两个一元n次多项式的加法。例如:P(A)=x+3x^2-5x^5+7,P(B)=2x^2+6x^3+x^5-4x^6,求P(A)+P(B)。
二、要点
1、多项式的结点存储:
主要在于输入一个系数和指数,创建存储该系数和指数的结点,考虑将该结点插入何位置。这主要涉及到节点之间数据(主要是指数)的比较和插入。
2、多项式的显示:
主要在于当系数为正数、负数、1、-1以及当前多项式是第一项还是中间项的问题,因为这些会涉及到不同的表达方式。难点在于要将所有情形都考虑到。
3、多项式的相加:
相加函数的参数为两个多项式链表的头结点,以及相加后的多项式链表的头结点,考虑指数相等、不相等的时候,两链表指针的移动方式。
三、代码实现
1.头文件
代码如下(示例):
#pragma once
#ifndef POLYNODE_H
#define POLYNODE_H
//#include "node.h"
// 多项式结点类
class PolyNode
{
public:
int coe; // 系数
int exp; // 指数
PolyNode* next;
};
#endif // !POLYNODE_H
2.源文件
代码如下(示例):
#include <iostream>
using namespace std;
#include "polynode.h"
// 读入链表函数
void inputLink(PolyNode* head);
// 显示链表函数
void printLink(PolyNode* head);
// 插入结点函数
void insertNode(PolyNode* head, int coe, int exp);
// 清空链表函数
void clearLink(PolyNode* head);
// 链表相加函数
void addLinks(PolyNode* headA, PolyNode* headB, PolyNode* headAB);
int main()
{
// 创建头结点并初始化
PolyNode* headA = new PolyNode;
PolyNode* headB = new PolyNode;
PolyNode* headAB = new PolyNode;
headA->next = nullptr;
headB->next = nullptr;
headAB->next = nullptr;
// 输入并显示两个多项式
cout << "请输入第一个多项式的系数和指数,以(0 0)结束:" << endl;
inputLink(headA);
cout << "多项式如下:" << endl;
printLink(headA);
cout << "请输入第二个多项式的系数和指数,以(0 0)结束:" << endl;
inputLink(headB);
cout << "多项式如下:" << endl;
printLink(headB);
// 多项式相加并显示
cout << "相加后的多项式为:" << endl;
addLinks(headA, headB,