c/c++数据结构一元多项式的求和

一个一元多项式可以看作由若干个一元单项式按降幂排列成的线性表。请编写程序对输入的两个一元多项式求和,并输出求和的结果。
输入为两个一元多项式,每个一元多项式输入一行,按照降幂依次输入每个单项式的系数和指数,并以-1 -1作为结束。系数和指数均为整数,指数不小于0。
输出为求和结果多项式,按照降幂依次输出每个单项的系数和指数,每个数值后面用一个空格隔开,输出结果多项式后换行。系数为0的单项式不得输出——除非结果多项式就是0,则直接输出0。
样例输入
2 7 3 5 12 1 6 0 -1 -1
7 5 9 4 3 0 -1 -1

样例输出

2 7 10 5 9 4 12 1 9 0

#include <stdio.h>

#define N 1000

int ap[N];
int ae[N];
int bp[N];
int be[N];

int main() {
    int i = 0, j = 0;
    int alen, blen;
    while (scanf("%d%d", &ap[i], &ae[i]), ap[i] >= 0 && ae[i] >= 0) {
        i++;
    }
    while (scanf("%d%d", &bp[j], &be[j]), bp[j] >= 0 && be[j] >= 0) {
        j++;
    }
    alen = i, blen = j;
    i = j = 0;
    while (i < alen && j < blen) {
        if (ae[i] > be[j]) {
            printf("%d %d ", ap[i], ae[i]);
            i++;
        } else if (ae[i] < be[j]) {
            printf("%d %d ", bp[j], be[j]);
            j++;
        } else {
            printf("%d %d ", bp[j]+ap[i], be[j]);
            i++; j++;
        }
    }
    while (i < alen) {
        printf("%d %d ", ap[i], ae[i]);
        i++;
    }
    while (j < blen) {
        printf("%d %d ", bp[j], be[j]);
        j++;
    }
    return 0;
}

大体上代码就是这样了,可能还需要根据题目微调一下N的大小,还有对0系数的处理

温馨提示:内容为网友见解,仅供参考
无其他回答

用C语言实现数据结构的题目:一元多项式相加
如: 1 1 2 2 3 3 0 0 2 2 3 3 0 0 结果:1 1 4 2 6 3 include <stdio.h> include <malloc.h> struct poly \/\/设置结构体 { int xi;int zhi;struct poly *next;};struct poly *jianli(void) \/\/建立链表 { struct poly *p1,*head1,*p2;head1=(struct poly*)malloc(siz...

数据结构课程设计报告(一元多项式的计算)
node * create(void) \/*指针函数,返回指针类型;用尾插法建立一元多项式的链表的函数*\/ { node *h,*r,*s;float c;int e;h=(node *)malloc(sizeof(node)); \/*建立多项式的头结点,为头结点分配存储空间*\/ r=h; \/*r指针始终动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*...

数据结构(c++)一元多项式的代数运算
2009-03-17 高分C++数据结构,一元多项式的相乘 19 2013-12-16 c\/c++数据结构一元多项式的求和 2 2011-01-04 一元多项式计算器(《数据结构》,请用C++语言) 2015-01-30 求一个c++数据结构一元多项式的表示及相加的代码,要包括删除... 5 2013-04-21 一元多项式简单的计算器(数据结构C++)。 只求大神写...

多项式相加求值怎样用C++代码实现
c=p1->coef;e=p1->exp;while(q1){ p1->coef=c*q1->coef;p1->exp=e+q1->exp;if(q1->next!=NULL){

高分求助C++代码解释
第一个多项式的第二项是1,1也和第2个多项式的每个元素都系数相乘,指数相加,这样得到的结果是x^2+2x 最后的结果就是把得到的这2个多项式相加就可以了。如果项数很多的话就是比这麻烦而已,道理一样。好了,如果上面说的这些你都明白了,代码就很好理解了。一开始是定义一些链表的数据结构什么的,...

数据结构c语言 用单链表储存一元多项式,并实现两个多项式的相加运算...
define MAX 20 \/\/多项式最多项数 typedef struct{ double ratio;int exp;} ElemType;typedef struct LNode { ElemType data;struct LNode *next;} LinkList;void CreateListR(LinkList *&L,ElemType a[],int n){ LinkList *s,*r;int i;L=(LinkList *)malloc(sizeof(LinkList));r=L;...

C++求解多项式
一个可行的基本结构如下:struct PolyNode { number_type coefficient;int index;};class Polynomial { public:\/\/ ...private:list < PolyNode > Poly;number_type xvalue; \/\/ x的值,多项式求值时用。可选 \/\/ ...};需要实现的函数至少要有:重载+、-、*、+=、-=、*=、=、一元负号运算符...

一元多项式简单的计算器(数据结构C++)。 只求大神写下减法代码。 我已...
有了加法,减法还用写吗?直接把参数B中的所有项的系数变作相反数,然后按加法处理 多一步转换而已。

数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加...
数据结构(c语言)用单链表存储一元多项式,并实现两个多项式的相加运算【最新】阅读:1037次 页数:36页 2016-03-21 举报 include<stdio.h> include<stdlib.h> include<malloc.h> typedef int ElemType;\/*单项链表的声明*\/ typedef struct PolynNode{ int coef; \/\/ 系数 int expn; \/\/ ...

帮忙用Microsoft Visual C++ 6.0编写一个程序,题目是:一元多项式...
{ int coef; \/\/多项式的系数 int exp; \/\/指数 struct polynode *next;}node;node *create() \/\/用尾插法建立一元多项式的链表 { node *h,*r,*s;int c,e;h=(node*)malloc(sizeof(node));r=h;printf("coef:");scanf("%d",&c);printf("exp: ");scanf("%d",&e);while(c!=0)...

相似回答