【数据结构_链表_List_1040】一元多项式加法运算的实现

来源:互联网 发布:mysql 5.5.58编译安装 编辑:程序博客网 时间:2024/04/28 20:35




#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>using namespace std;typedef struct node{    int data1,data2;//data1表示系数,data2表示次方;    struct node *next;}List;void initList(List *&L){    L=(List *)malloc(sizeof(List));    List *p,*q;    p=L;    int  dat1,dat2;    char dot;    while(cin>>dat1>>dot>>dat2)    {        if(dat1==0 && dat2==0) break;        q=(List *)malloc(sizeof(List));        q->data1=dat1;        q->data2=dat2;        p->next=q;        p=q;    }    p->next=NULL;}void addList(List *&L1,List *&L2){List *p,*q,*r,*s;p=L1->next;q=L2->next;while(p!=NULL){int tmp=p->data2;while(q!=NULL){r=q->next;if(q->data2==tmp){q->data1+=p->data1;break;}else if(r!=NULL && q->data2<tmp && r->data2>tmp){s=(List *)malloc(sizeof(List));s->data1=p->data1;s->data2=p->data2;q->next=s;s->next=r;break;}else if(r==NULL){s=(List *)malloc(sizeof(List));s->data1=p->data1;s->data2=p->data2;q->next=s;s->next=r;break;}else if(q==L2->next && tmp<q->data2){s=(List *)malloc(sizeof(List));s->data1=p->data1;s->data2=p->data2;L2->next=s;s->next=q;break;}else q=q->next;}p=p->next;q=L2->next;}}void Traverse(List *&L){List *p=L->next;while(p!=NULL)    {        if(p->data1!=0)            cout<<p->data1<<"x^"<<p->data2;        p=p->next;        if(p!=NULL && p->data1!=0)            cout<<"+";    }}int main(){List *L1,*L2;initList(L1);initList(L2);addList(L1,L2);Traverse(L2);return 0;}


0 0