一元多项式的表示及相加

  1 #include <iostream>
  2 #include<stdlib.h>
  3 
  4 using namespace std;
  5 
  6 typedef struct LNode
  7 {
  8     int coef;//系数
  9     int expn;//指数
 10     struct LNode *next;
 11 }LNode,*LinkList;
 12 
 13 
 14 int CreateList_L(LinkList &L,int n)//默认指数按升序排列
 15 {
 16     LinkList p,q;
 17     for(int i=0;i<n;i++)
 18     {
 19          p=(LinkList)malloc(sizeof(LNode));
 20          cout<<"输入元素系数:";
 21          cin>>p->coef;
 22          cout<<"输入元素指数:";
 23          cin>>p->expn;
 24          if(i==0)L=p;
 25          else q->next=p;
 26          q=p;
 27          p->next=NULL;
 28     }
 29    return 0;
 30 }
 31 
 32 
 33 int Display_L(LinkList L)
 34 {
 35     if(!L)cout<<"f(x)=0"<<endl;
 36     else
 37     {
 38         cout<<"f(x)="<<L->coef;
 39         if(L->expn)cout<<"*"<<"x^"<<L->expn;
 40         L=L->next;
 41         while(L)
 42         {
 43             if(L->coef>0)
 44             {
 45                 cout<<"+";
 46                 cout<<L->coef<<"*"<<"x^"<<L->expn;
 47             }
 48             else cout<<L->coef<<"*"<<"x^"<<L->expn;
 49             L=L->next;
 50         }
 51     }
 52     return 0;
 53 }
 54 
 55 
 56 int AddPolyn(LinkList La,LinkList Lb,LinkList &Lc)
 57 {
 58     LinkList pa,pb,p;
 59     int k=1;
 60     pa=La;pb=Lb;
 61     //确定“和多项式”的头结点
 62     while(k)
 63     {
 64          if(pa->expn<pb->expn){p=Lc=pa;pa=pa->next;k=0;}
 65          else if(pa->expn>pb->expn){p=Lc=pb;pb=pb->next;k=0;}
 66          else
 67          {
 68              pa->coef+=pb->coef;
 69              if(pa->coef)
 70              {
 71                   p=Lc=pa;
 72                   pa=pa->next;
 73                   k=0;
 74              }
 75              else
 76              {
 77                  pa=pa->next;
 78                  pb=pb->next;
 79                  if(!pa||!pb) break;
 80              }
 81          }
 82     }
 83     if(!pb&&pa){p=Lc=pa;pa=pa->next;}
 84     if(!pa&&pb){p=Lc=pb;pb=pb->next;}
 85     if(!pa&&!pb) Lc=NULL;
 86     //确定接下来的节点
 87     while(pa&&pb)
 88     {
 89         if(pa->expn<pb->expn){p->next=pa;p=pa;pa=pa->next;}
 90         else if(pa->expn>pb->expn){p->next=pb;p=pb;pb=pb->next;}
 91         else
 92         {
 93             pa->coef+=pb->coef;
 94             if(pa->coef)
 95             {
 96                   p->next=pa;
 97                   p=pa;
 98                   pa=pa->next;
 99                   pb=pb->next;
100             }
101             else
102             {
103                   pa=pa->next;
104                   pb=pb->next;
105             }
106 
107         }
108     }
109     while(!pb&&pa)
110     {
111         p->next=pa;
112         p=pa;
113         pa=pa->next;
114     }
115     while(!pa&&pb)
116     {
117         p->next=pb;
118         p=pb;
119         pb=pb->next;
120     }
121     return 0;
122 }
123 
124 
125 
126 int main()
127 {
128     LinkList La,Lb,Lc;
129     int m,n;
130     cout<<"请输入La中的元素个数:";
131     cin>>m;
132     CreateList_L(La,m);
133     cout<<"请输入Lb中的元素个数:";
134     cin>>n;
135     CreateList_L(Lb,n);
136     AddPolyn(La,Lb,Lc);
137     Display_L(Lc);
138     return 0;
139 }
只有0和1的世界是简单的
原文地址:https://www.cnblogs.com/nullxjx/p/5901469.html