题目来源:Wejudge#3988

题目

首先输入2个整数m和n(0<m, n<=1000000000)分别代表2个多项式的项数。

然后,输入m+n行数据,前m行表示第一个多项式,后n行表示第二个多项式

每行1个整数c和一个非负整数e(e>=0),分别表示多项式每一项的系数和指数(指数按升序排列)。

样例

输入

3 4
1 1
2 3
3 5
1 0
-6 1
1 2
-3 5

输出

x+2x3+3x5
1-6x+x2-3x5
1-5x+x2+2x3

代码

#include<stdio.h>
#include<stdlib.h>typedef struct LNode{int   coef,index;       //数据域struct LNode  *next;   //指针域
}LNode,*LinkList;   void create(LinkList &ll,int n);
void add(LinkList l1,LinkList l2,LinkList &L);
void print(LinkList L);int main(){int n,m;while(~scanf("%d %d", &n , &m)){LinkList l1,l2,l3;create(l1, n);create(l2, m);add(l1,l2,l3);print(l1);print(l2);print(l3);}return 0;
}void create(LinkList &ll,int n)
{ll=new LNode;LNode *l=ll;int a,b;while(n--){scanf("%d %d",&a,&b);if(a==0)continue;l->next=new LNode;l=l->next;l->coef=a,l->index=b;l->next=NULL;}
}
void add(LinkList l1,LinkList l2,LinkList &L)
{int cc=0;L=new LNode;LNode *p=L;l1=l1->next,l2=l2->next;while(l1&&l2){p->next=new LNode;if(l1->index<l2->index){//指数比较,小的先进行 ,l1小 p->next->coef=l1->coef;p->next->index=l1->index;l1=l1->next;} else if(l1->index==l2->index){//指数相同的相加 int u=l1->coef+l2->coef;if(u==0){//为0 p->next->coef=0;p->next->index=0;}else{//不为0 p->next->coef=u;p->next->index=l1->index;}l1=l1->next;l2=l2->next;}else{//l2小 p->next->coef=l2->coef;p->next->index=l2->index;l2=l2->next;}p=p->next;}while(l1){p->coef=l1->coef;p->index=l1->index;l1=l1->next;p->next=new LNode;p=p->next;}while(l2){p->coef=l2->coef;p->index=l2->index;l2=l2->next;p->next=new LNode;p=p->next;}p->next=NULL;
}
void print(LinkList L)
{int kk=0;while(L->next!=NULL){kk++;L=L->next;if(kk==1){//第一个数 if(L->coef==0){//a=0continue;}else if(L->coef==1){//a=1      剩下都有b是0  1  其他的情况 if(L->index==0){printf("%d",L->coef);//就是1 }else if(L->index==1){printf("x");}else{printf("x^%d",L->index);}}else{//a是其他情况 if(L->index==0){printf("%d",L->coef);}else if(L->index==1){printf("%dx",L->coef);}else{printf("%dx^%d",L->coef,L->index);}}} else{//不是第一个 if(L->coef>=0){//正数和0 if(L->coef==0){//a=0continue;}else if(L->coef==1){//a=1      剩下都有b是0  1  其他的情况 if(L->index==0){printf("+%d",L->coef);//就是1 }else if(L->index==1){printf("+x");}else{printf("+x^%d",L->index);}}else{//a是其他情况 if(L->index==0){printf("+%d",L->coef);}else if(L->index==1){printf("+%dx",L->coef);}else{printf("+%dx^%d",L->coef,L->index);}}}else{{ if(L->index==0){printf("%d",L->coef);}else if(L->index==1){printf("%dx",L->coef);}else{printf("%dx^%d",L->coef,L->index);}}}}}printf("\n");
}

链表应用之多项式相加相关推荐

  1. MFC版链表实现稀疏多项式相加减

    链表实现多项式运算(加减)MFC可视化版 题目 设计一个一元稀疏多项式简单计算器. 基本要求 (1)输入并建立两个多项式: (2)多项式a与b相加,建立和多项式c: (3)多项式a与b相减,建立差多项 ...

  2. 链表应用——多项式相加

    f(X)=1+x+x2+x5 g(X)=x3+x6+x8+x100 f(X)+g(X)=1+x+x2+x3+x5+x6+x8+x100 两个有序多项式相加合并问题: 显然第一个想到的是用数组解决,可仔 ...

  3. 链表应用 多项式相加

     用链表实现多项式相加 #include<iostream> #include<cstdio> #include<malloc.h> #define flag -1 ...

  4. 【数据结构笔记07】不带头结点链表实现多项式相加、相乘

    本次笔记内容: 2.4 多项式的加减运算实现 P24 1.题意理解与多项式表示 P25 2.程序框架及读入多项式 P26 3.加法.乘法运算及多项式输出 文章目录 多项式加法运算 采用不带头结点的单项 ...

  5. 数据结构(Java):用单链表实现多项式相加

    要求: 1.已知有两个多项式Pn(x)和Qm(x),并且在Pn(x)和Qm(x)中指数相差很多,设计算法,求Pn(x)+Qm(x) 2.进行加法运算时不重新开辟存储空间. //定义节点类 class ...

  6. 多项式相加减【数据结构实验报告】

    实验名称:实验一 多项式加减法 学号:*** 姓名:gnosed 实验日期:2017.10.16 一.实验目的 通过实现多项式的加减法,对链表有更深入的了解 二.实验具体内容 1.实验题目1: (1) ...

  7. 求两个多项式相加的和(数据结构cpp)

    (萌新写代码,欢迎各位大佬多多指教!) 假设我们已知多项式    A:             B:  现在要求解这两个多项式的和. 第一步:用什么方式储存多项式?需要储存的数据有多项式的系数和指数, ...

  8. 多项式相加的C语言实现

    #include <stdio.h> #include <stdlib.h>//定义结构体类型 typedef struct Node{float xishu; //定义系数为 ...

  9. E. DS线性表—多项式相加

    [id:24][20分]E. DS线性表-多项式相加 题目描述 对于一元多项式 p(x)=p0+p1x+p2x2+ - +pnxn ,每个项都有系数和指数两部分,例如p2x2的系数为p2,指数为2. ...

最新文章

  1. 11.如何在非固定大小的地图图片上正确渲染ROS小车的位置和运行轨迹
  2. 虚拟机里安装Linux系统出现乱码
  3. 2014年第五届蓝桥杯 - 省赛 - C/C++大学A组 - G. 蚂蚁感冒
  4. 计算机研发部门职责,计算机研发岗位职责
  5. java impala_Java实现impala操作kudu
  6. iOS屏幕旋转 浅析
  7. 通信网真的面临容量危机?
  8. 水性喷涂胶行业调研报告 - 市场现状分析与发展前景预测
  9. MATLAB学习笔记
  10. 当我在浏览器输入 www.baiu.com 之后发生了什么
  11. 机器学习数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
  12. PD runner下载和使用教程
  13. 【题解】食物链(并查集)
  14. 高并发点赞系统 梳理
  15. 电脑硬盘怎样合并分区?
  16. STM32H743使用PA0,PA1作为ADC输入的坑!!
  17. java从倒数第n个指定字符串开始截取到最后
  18. 你还在用notifyDataSetChanged? 你已经out了
  19. ubuntu 18.04检查服务器异常重启的日志
  20. [USACO Nov08]玩具toys解题报告

热门文章

  1. Eviews7.2模型建模与预测时间序列分析(ARIMA 模型的建立与预测)
  2. js时间与当前时间比较
  3. powerdesigner16.5破解补丁
  4. TCP的三次握手与四次断开
  5. UserWarning: mkl-service package failed to import, therefore Intel(R) MKL initialization ensuring it
  6. 简单的数据库代理操作
  7. 路由之间通过静态通信(+回环)
  8. C语言作用域(变量生存的空间)学习
  9. 线上展厅打造视觉亮点
  10. shell 函数详解