1040 一元多项式加法运算的实现 SWUST OJ数据结构(前40题)

1040 一元多项式加法运算的实现

描述

编程实现一元多项式的加法运算。(要求用链表实现)

输入

第一行为一元多项式A, 以 0,0 作为输入结束;

第二行为一元多项式B, 以 0,0 作为输入结束。

输出

多项式A和多项式B的和。

样例输入

5,3 7,8 9,15 0,0
2,0 6,3 -7,8 0,0

样例输出

2x0+11x3+9x15

c++代码实现

#include 
using namespace std;
typedef struct node 
{
    int xishu;
    int cifang;
    node *next;
} LinkNode;

void Init(LinkNode *&Head)
{
    Head=(LinkNode *)malloc(sizeof(LinkNode));
    Head->next=NULL;
}

void Create (LinkNode *&Head)
{
    LinkNode *p1,*p2;
    p1=Head;
    
    int c,x;
    while(scanf("%d,%d",&c,&x)&&(c||x))
    {
        p1=Head;
        while(p1->next!=NULL&&p1->next->cifang<x)
            p1=p1->next;
        
        if(p1->next==NULL||p1->next->cifang>x)
        {
            p2=(LinkNode *)malloc(sizeof(LinkNode));
            p2->cifang=x;
            p2->xishu=c;
            p2->next=p1->next;
            p1->next=p2;
        }
        else 
            p1->next->xishu+=c;
    }
}

void Put(LinkNode *Head)
{
    LinkNode *p1=Head->next;
    
    while(p1!=NULL)
    {
        if(p1->xishu==0)
        {
            p1=p1->next;
            continue;
         } 
        if(p1!=Head->next)
            cout<<"+";
        cout<<p1->xishu<<"x^"<<p1->cifang;
        p1=p1->next;
    }
}

int main()
{
    LinkNode *Head;
    Init(Head);
    Create(Head);
    Create(Head);
    Put(Head);
    return 0;
}

你可能感兴趣的:(1040 一元多项式加法运算的实现 SWUST OJ数据结构(前40题))