线性表实现多项式加法(C++)以及链表实现稀疏多项式的加法

本文详细介绍了如何使用链表数据结构实现多项式加法,包括初始化、输入项、相加过程,并特别处理了稀疏多项式的情况。通过实例展示了如何处理不同指数的元素合并和多余多项式的处理。

线性表链表案例之多项式加法

线性表实现多项式加法

在这里插入图片描述

#include <iostream>
#define OK 1
#define ERROR 0
#define MAXSIZE 100
using namespace std;
typedef int Status;
typedef struct{
   
   
    int exponent;
    int base;
}ElemType;
typedef struct
{
   
   
    ElemType *elem;//对应方式二初始化
    //ElemType* elem;对应方式一初始化
    int length;
}SqList;

Status init(SqList &L){
   
   
    L.elem=new ElemType[MAXSIZE];
    if(!L.elem) return ERROR;
    L.length=0;
    return OK;
}
void createSqlist(SqList &L,int n){
   
   
    init(L);
    while(n>0){
   
   
        printf("请输入底数:\n");
        cin>>L.elem[L.length].base;
        printf("请输入指数:\n");
        cin>>L.elem[L.length++].exponent;
        n--;
    }
}
void selectAll(SqList L){
   
   
    for(int i=0;i<L.length;i++){
   
   
        if(i==L.length-1){
   
   
            printf("%dX^%d",L.elem[i].base,L.elem[i].exponent);
        }else{
   
   
            printf("%dX^%d+",L.elem[i].base,L.elem[i].exponent);
        }
    }
}
//线性表的多项式相加
SqList add(SqList L1,SqList L2){
   
   
    int p1=0;int p2=0;
    SqList R;
    R.elem=new ElemType[L1.length+L2.length];
    R.length=0;
    while(p1<L1.length&&p2<L2.length){
   
   
        if(L1.elem[p1].exponent==L2.elem[p2].exponent){
   
   //指数相等的情况
            int result=L1.elem[p1].base+L2.elem[p2].base;//底数相加
            if(result!=0){
   
   
                R.elem[R.length].base=result;//底数
                R.elem[R.length++].exponent=L1.elem[p1].exponent;//指数
            }
            //移动指针
            p1++;
            p2++;
        }else{
   
   //指数不相等的情况
            if(L1.elem[p1].exponent<L2.elem[p2].exponent){
   
   //L1的指数更小
                R.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜iwi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值