数据结构与算法课程记录——单链表作业3:多项式加法


前言

本次课程地址: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,
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值