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

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

多项式加法运算图示:

数据结构——多项式加法运算图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;
}
相关文章
|
7月前
|
存储 C语言
【数据结构】顺序表的定义和运算
【数据结构】顺序表的定义和运算
164 0
|
24天前
|
开发者
除了交集运算,Set 类型还可以用于哪些数据结构的操作?
【10月更文挑战第30天】`Set`类型在数据结构操作方面提供了丰富的功能和便利,能够帮助开发者更高效地处理各种数据集合相关的任务,提高代码的简洁性和性能。
|
6月前
|
存储 算法
数据结构学习记录——集合及运算(集合的表示、并查集、树结构表示集合、集合运算、查找函数、并运算)
数据结构学习记录——集合及运算(集合的表示、并查集、树结构表示集合、集合运算、查找函数、并运算)
35 0
|
6月前
|
算法
数据结构和算法学习记录——层序遍历(层次遍历)、二叉树遍历的应用(输出二叉树中的叶节点、求二叉树的高度、二元运算表达式树及其遍历、由两种遍历序列确定二叉树)
数据结构和算法学习记录——层序遍历(层次遍历)、二叉树遍历的应用(输出二叉树中的叶节点、求二叉树的高度、二元运算表达式树及其遍历、由两种遍历序列确定二叉树)
52 0
|
存储 算法 索引
【霍罗维兹数据结构】GRAPH 图 | 基本图运算 DFS&BFS | 最小代价生成树
【霍罗维兹数据结构】GRAPH 图 | 基本图运算 DFS&BFS | 最小代价生成树
115 0
|
存储 算法
【霍罗维兹数据结构】单链表 | 动态链接的栈和队列 | 多项式 - POLYNOMIALS | 一些链表的操作
【霍罗维兹数据结构】单链表 | 动态链接的栈和队列 | 多项式 - POLYNOMIALS | 一些链表的操作
61 0
|
Java
java数据结构22:多项式加法
我们经常遇到两多项式相加的情况,在这里,我们就需要用程序来模拟实现把两个多项式相加到一起。首先,我们会有两个多项式,每个多项式是独立的一行,每个多项式由系数、幂数这样的多个整数对来表示。
212 0
|
存储 算法
【开卷数据结构 】多项式的链表表示
【开卷数据结构 】多项式的链表表示
115 0
|
存储 算法
数据结构上机实践第四周项目7 - 多项式求和
数据结构上机实践第四周项目7 - 多项式求和
160 0
数据结构上机实践第四周项目7 - 多项式求和
|
存储 Java 大数据