数据结构——多项式的加法运算

简介: 介绍多项式加法运算的链表实现方式

多项式加法运算图示:

数据结构——多项式加法运算图1.png

基本算法思路:

数据结构——多项式加法运算图2.png

多项式的具体结构类型:

 #include <iostream>
#define MAXSIZE 100        //定义最大元素个数 
#define ElemType int        //定义数据类型 
#define ERROR 0
#define TRUE 1 
#define OVERFLOW -1

using namespace std;

typedef struct PloyNode *PN;
struct  PloyNode{
    int coef;
    int expon;
    PN link;
};

多项式加法的代码实现:

PN PloyAdd(PN P1, PN P2){
    PN front, rear, temp;        //定义双指针作为标记 
    int sum;
    rear = new(PloyNode);
    front = rear;        //初始化指针位置 
    while(P1 && P2){        //当两个多项式都有非零项可以处理时 
        switch(Compare(P1->expon, P2->expon)){
            case 1:
                Attach(P1->coef, P1->expon, &rear);        //添加元素 
                P1 = P1->link;        //指针后移 
                break;
            case -1:
                Attach(P1->coef, P1->expon, &rear);
                P2 = P2->link;
                break;
            case 0:
                sum = P1->coef + P2->coef;
                if(sum)
                    Attach(sum, P1->coef, &rear);
                P1 = P1->link;
                P2 = P2->link;
                break;
        }
    }
    while(P1)        //处理之前未处理完的值(仅剩P1还有非零项时)
        Attach(P1->coef, P1->expon, &rear);
    while(P2)
        Attach(P1->coef, P1->expon, &rear);
    rear->link = nullptr;        //尾指针 
    temp = front;
    front = front->link;        //头指针 
    delete temp;
    return front;
}

其中的一些小函数:

int Compare(int a, int b){        //做两多项式的系数比较
    if(a > b)
        return 1;
    else if(a < b)
        return -1;
    else
        return 0;
}
void Attach(ElemType CoefTemp, ElemType ExponTemp, PN *Prear){        //做多项式相加的函数 
    PN P;
    P = new PloyNode;
    P->coef = CoefTemp;
    P->expon = ExponTemp;
    P->link = nullptr;
    (*Prear)->link = P;
    *Prear = P;
}
相关文章
|
4月前
|
存储 C语言
【数据结构】顺序表的定义和运算
【数据结构】顺序表的定义和运算
65 0
|
5月前
|
存储 算法 索引
【霍罗维兹数据结构】GRAPH 图 | 基本图运算 DFS&BFS | 最小代价生成树
【霍罗维兹数据结构】GRAPH 图 | 基本图运算 DFS&BFS | 最小代价生成树
60 0
|
5月前
|
存储 算法
【霍罗维兹数据结构】单链表 | 动态链接的栈和队列 | 多项式 - POLYNOMIALS | 一些链表的操作
【霍罗维兹数据结构】单链表 | 动态链接的栈和队列 | 多项式 - POLYNOMIALS | 一些链表的操作
37 0
|
9月前
|
Java
java数据结构22:多项式加法
我们经常遇到两多项式相加的情况,在这里,我们就需要用程序来模拟实现把两个多项式相加到一起。首先,我们会有两个多项式,每个多项式是独立的一行,每个多项式由系数、幂数这样的多个整数对来表示。
152 0
|
9月前
|
存储 算法
【开卷数据结构 】多项式的链表表示
【开卷数据结构 】多项式的链表表示
80 0
|
存储 算法
数据结构上机实践第四周项目7 - 多项式求和
数据结构上机实践第四周项目7 - 多项式求和
119 0
数据结构上机实践第四周项目7 - 多项式求和
|
开发者 索引 Python
Python常用数据结构和运算|学习笔记
快速学习Python常用数据结构和运算
Python常用数据结构和运算|学习笔记
|
存储 C语言
C语言数据结构-稀疏多项式运算
C语言数据结构-稀疏多项式运算
341 0
数据结构多项式相加
多项式相加数据域有两个int 一个放x的一个放x前面的值
92 0
|
存储 C语言
C语言数据结构-稀疏多项式运算
稀疏多项式可以抽象成一个线性表,数据域存储指数和系数,指针域链接下一项,直到结束,操纵链表即可实现对多项式的运算!本文记录整个实现的过程,便于复查
549 0

热门文章

最新文章