用链式线性表实现两个一元多项式相加

2023-11-09

#include <iostream>
#include <cstdlib>
#include <cstdio>

using namespace std;

typedef struct PolyNode {
int coef;
int exp;
PolyNode *next;
}node;

node * CreatPoly(){
     PolyNode *h,*tail,*s;
     int coef,exp;
     h=( PolyNode *)malloc(sizeof(node));
     h->next=NULL;
     tail=h;
     cout<<"coef,exp: ";
     scanf("%d,%d",&coef,&exp);
     while (coef){
        PolyNode *s=( PolyNode *)malloc (sizeof(node));
            s->coef=coef;
            s->exp=exp;
            s->next=tail->next;
            tail->next=s;
            tail=s;

               cout<<"coef,exp: ";
               scanf("%d,%d",&coef,&exp);
     }
     return h;

}

void PolyAdd(node *Polya,node *Polyb){
   node *p,*q,*pre,*temp;
   p=Polya->next;
    q=Polyb->next;
     pre=Polya;
     int sum;
     while (p&&q){
              if(p->exp < q->exp){
                            pre->next = p;
                            pre = p;
                            p = p->next;
              }else if(p->exp > q->exp){
                         pre->next = q;
                            pre = q;
                            q = q->next;
              }
              else{

                            sum=p->coef + q->coef ;
                            if(sum){
                                          p->coef=sum;
                                          pre->next=p;
                                          pre=p;
                                          p=p->next;
                                          temp=q->next;
                                          free(q);
                                          q=temp;
                            }else{
                                 temp=p->next;
                                 free(p);
                                 p=temp;

                                 temp=q->next;
                                 free(q);
                                 q=temp;

                            }
              }

     }
     pre->next = p ? p:q;

}

int PrintPoly(node *h){
   node *p=h->next;
   while (p){
           printf("%d*x^%d ",p->coef,p->exp);
              p=p->next;
   }
   cout<<endl;
   return 1;
}
int main()
{
    node *Polya,*Polyb;
    cout<<"请输入第一个一元多项式的系数和指数(假定以输入系数为0来结束)"<<endl;
    Polya= CreatPoly();
    cout<<"请输入的第一个一元多项式为"<<endl;
    PrintPoly(Polya);
     cout<<"请输入第二个一元多项式的系数和指数(假定以输入系数为0来结束)"<<endl;
     Polyb= CreatPoly();
     cout<<"请输入的第二个一元多项式为"<<endl;
    PrintPoly(Polyb);
     cout<<"这两个一元多项式相加后的结果为"<<endl;
     PolyAdd(Polya,Polyb);
      PrintPoly(Polya);
    return 0;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用链式线性表实现两个一元多项式相加 的相关文章

随机推荐

  • 20个最炫HTML5,jQuery和CSS3下拉菜单制作教程(附示例/源码)

    3 Level Navigation Menu 三级导航菜单 独具特色的导航菜单 包含CSS3渐变 多个子菜单和jQuery动画 CSS3 Minimalistic Navigation Menu 一个简单的CSS3动画导航菜单 SLIDE
  • python之logging模块详解

    python之 logging 模块 文章目录 python之 logging 模块 一 日志关概念 日志的作用 日志的等级 3 日志字段信息与日志格式 4 日志功能的实现 二 logging 模块介绍 什么是logging模块 loggi
  • Linux服务器启动tomcat的三种方式

    直接进入主题 首先cd进入tomcat的bin文件夹下 然后可以尝试以下三种启动方式 第一种 当前会话启动 startup sh 效果 然后tomcat就在后台启动了 我们还可以在当前会话中继续输入其它指令 比如 ps ef grep to
  • Source Insight 自动补全 C 关键字、keil 标准库关键字

    一开始遇到该问题疯狂 baidu bing 相关的 blog 寥寥无几 而且是差不多十年前的 blog 主要原因 Source Insight 默认不包含 C 库文件 keil 标准库 导致编辑代码时找不到 C 库的相关宏 变量类型 函数等
  • [1082]IDEA配置tomcat时出现的问题及解决(HTTP状态404-未找到)

    文章目录 问题1 没有新建环境变量 问题2 tomcat设置depolyment有误 问题1 没有新建环境变量 解决 在系统环境变量中添加变量CATALINA BASE和CATALINA BASE 两个变量的值都是tomcat的安装路径 如
  • 【Java SE】基本数据类型

    大家好 我是保护小周 本期为大家带来的是 Java的基本数据类型 内容会与C语言的基本数据类型进行基本的比较 数据类型提示 整型提升 以及简单了解 String 类型 进一步感受Java 的安全性 C语言混不下去了 面向对象的编程太爽了 目
  • Hyperledger Fabric 安装环境配置答疑(1)

    目录 1 Hyperledger Fabric只支持Ubuntu系统吗 2 cURL是什么 有什么作用 3 为什么要安装Docker及docker compose 4 能否不使用Golang而换作其他语言环境 5 一定要安装Node与npm
  • 多态的概念

    一 多态的概念 多态 Polymorphism 按字面的意思就是 多种状态 是面向对象的序设计语言最核心的特征 具体点就是去完成某个行为 当不同的对象去完成时会产生出不同的状态 多态建立在继承和封装的基础上 二 多态的分类 编译时多态 设计
  • 静态成员变量的初始化,以及可能引发的multiple define问题

    静态成员变量的初始化 以及可能引发的multiple define问题 先说个人问题的解决方式 不要再头文件中定义静态成员变量 示例 test h ifndef TEST H define TEST H class hh static in
  • 网络协议的三个要素是什么?各有什么含义?

    网络协议的三个要素是什么 各有什么含义 网络协议 为进行网络中的数据交换而建立的规则 标准或约定 由以下三个要素组成 1 语法 即数据与控制信息的结构或格式 2 语义 即需要发出何种控制信息 完成何种动作以及做出何种响应 3 规则 即事件实
  • 删除tomcat日志

    1 df 查看磁盘空间 2 对应用户进去删掉对应日志 3 重启tomcat 重新生成文件 或者 4 lsof grep deleted发现有大量刚刚删除文件的进程存在 kill掉进程 5 使用df 查看磁盘空间 发现已经回收 最好重启下to
  • 二叉搜索树的中序遍历为 递增序列_Go 刷 Leetcode 系列:恢复二叉搜索树

    二叉搜索树中的两个节点被错误地交换 请在不改变其结构的情况下 恢复这棵树 示例 1 输入 1 3 null null 2 1 3 2输出 3 1 null null 2 3 1 2 示例 2 输入 3 1 4 null null 2 3 1
  • 一维连续型随机变量的函数分布

    目录 a b N 2 a b N 0 1 2 N 2 e sin a b N 2 a b N 0 1 2 N 2 e sin
  • LoadRunner脚本测试——登录实践

    实习公司最近在做一款会计项目的财政管理系统 跟着测试组在做登录响应测试时 学到了不少实践经验 本文作以简单阐述和分享 通过代理服务器录制脚本 测试系统的门户必须用Chrome打开 然而测试环境lr11似乎只对IE浏览器兼容 事实上 lr与浏
  • Java入门(2) —— 变量详解、运算符、定义类和定义方法以及方法的调用

    1 变量 1 定义变量 1 声明的同时直接赋值 数据类型 变量名 值 2 先声明 后赋值 声明 数据类型 变量名 赋值 变量名 值 2 数据类型 基本数据类型 4类8种 整数 gt 直接写整数 默认就是 int byte 1个字节 shor
  • 喷水装置(一)贪心算法

    听说这是 贪心算法 的一个简单应用 虽说是简单 但是对我来说 确实不简单 说下面说有用的 题目描述 现有一块草坪 长为20米 宽为2米 要在横中心线上放置半径为Ri的喷水装置 每个喷水装置的效果都会让以它为中心的半径为实数Ri 0
  • Fire-YOLO:一种用于火灾检测的小目标检测方法

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 作者丨CY 来源丨当交通遇上机器学习 编辑丨极市平台 极市导读 本次介绍的文章是太原理工大学团队在2022年发表在 Sustainability 的关于火灾检测的小目标实
  • qiankun 常见问题集合(一)

    qiankun 常见问题集合 一 1 loader js 220 Uncaught in promise Error qiankun You need to export lifecycle functions in app4 entry
  • 在使用localstorage的时候发生了报错的解决办法

    在使用localstorage的时候 发生了报错 提示是传入的格式不正确 但是传入的是json格式 为什么不正确呢 1 在localStorage setItem 过程中 传进的参数需使用JSON tringfy 方法转成json格式的字符
  • 用链式线性表实现两个一元多项式相加

    include