| 
 | 
 
 
发表于 2014-4-15 12:36:52
|
显示全部楼层
 
 
 
修正一点儿粗心小错误:- #include<stdio.h>
 
 - #include<malloc.h>
 
 - #include<stdlib.h>
 
  
- typedef struct Polynomial
 
 - {
 
 -         float coef;
 
 -         int expn; //指数
 
 -         struct Polynomial *next;
 
 - }*Polyn;
 
  
- void InitPolyn(Polyn *P);
 
 - void CreatPolyn(Polyn *P,int m);//创建一个多项式
 
 - void ShowPolyn(Polyn P);//打印出多项式
 
 - void SortPolyn(Polyn P);//按指数降序排列
 
 - void AddPolyn(Polyn Pa,Polyn Pb,Polyn Pc);//Pc = Pa + Pb
 
 - void SubPolyn(Polyn Pa,Polyn Pb,Polyn Pc);//Pc = Pa - Pb
 
 - void valPolyn(Polyn *P,int x);//求多项式当X为多少的值
 
  
- void InitPolyn(Polyn *P)
 
 - {
 
 -         *P = (Polyn )malloc(sizeof(Polyn));
 
 -         (*P)->coef = 0.0;
 
 -         (*P)->expn = 0;
 
 -         (*P)->next = NULL;//初始化
 
 - }
 
 - void CreatPolyn(Polyn *P,int m)
 
 - {
 
 -         float c;
 
 -         int e,i;
 
 -         Polyn s,q;
 
 -         q = *P;
 
 -         printf("请输入%d个项数\n",m);
 
 -         for(i = 1;i<=m;i++)
 
 -         {
 
 -                 printf("请输入第%d项的系数和指数:  ",i);
 
 -                 scanf("%f %d",&c,&e);
 
 -                 s = (Polyn )malloc(sizeof(Polyn));
 
 -                 s->coef = c;
 
 -                 s->expn = e;
 
 -                 s->next = NULL;
 
 -                 q->next = s;
 
 -                 q = s;
 
 -                 q->next = NULL;
 
 -         }
 
 -         SortPolyn(*P);
 
 - }
 
  
- void SortPolyn(Polyn P)                                
 
 - {
 
 -         Polyn p,q,r;
 
 -         q=P->next;
 
 -         P->next=NULL;
 
 -                 while(q!=NULL)         //插入法排序
 
 -         {
 
 -                 p=P; 
 
 -                 while(p->next!=NULL&&p->next->expn>q->expn)
 
 -                 p=p->next;
 
 -                 r=q->next; 
 
 -                 q->next=p->next;
 
 -                 p->next=q;
 
 -                 q=r;    
 
 -         } 
 
 - }
 
  
- void ShowPolyn(Polyn P)
 
 - {
 
 -         Polyn pchar;
 
 -         pchar = P->next;
 
 -         while(pchar)
 
 -         {
 
 -                 printf("%fX^%d ",pchar->coef,pchar->expn);
 
 -                 pchar = pchar->next;
 
 -         }
 
 -         printf("\n");
 
 - }
 
  
- void AddPolyn(Polyn Pa,Polyn Pb,Polyn Pc)
 
 - {
 
 -         float x;
 
 -         Polyn anext,bnext,q,s;
 
 -         anext = Pa->next;
 
 -         bnext = Pb->next;
 
 -         q = Pc;
 
 -         while(anext&&bnext)
 
 -         {
 
 -                 if(anext->expn == bnext->expn)//指数相同
 
 -                 {
 
 -                         x = anext->coef+bnext->coef;
 
 -                         if(x!=0)//系数相加不等于0,插入表中
 
 -                         {
 
 -                                 s = (Polyn)malloc(sizeof(Polyn));
 
 -                                 s->coef = x;
 
 -                                 s->expn = anext->expn;
 
 -                                 s->next = NULL;
 
 -                                 q->next = s;
 
 -                                 q = q->next;
 
 -                         }
 
 -                         else//系数等于0
 
 -                         {
 
 -                                 anext = anext->next;
 
 -                                 bnext = bnext->next;
 
 -                         }
 
 -                 }
 
 -                 else if(anext->expn < bnext->expn)//指数小的插入表中
 
 -                 {
 
 -                         s = (Polyn)malloc(sizeof(Polyn));
 
 -                         s->coef = anext->coef;
 
 -                         s->expn = anext->expn;
 
 -                         s->next = NULL;
 
 -                         q->next = s;
 
 -                         q = q->next;
 
 -                         anext = anext->next;
 
 -                 }
 
 -                 else
 
 -                 {
 
 -                         s = (Polyn)malloc(sizeof(Polyn));
 
 -                         s->coef = bnext->coef;
 
 -                         s->expn = bnext->expn;
 
 -                         s->next = NULL;
 
 -                         q->next = s;
 
 -                         q = q->next;
 
 -                         bnext = bnext->next;
 
 -                 }
 
 -         }
 
 -         while(anext == NULL&&bnext!=NULL)
 
 -         {
 
 -                 s = (Polyn)malloc(sizeof(Polyn));
 
 -                 s->coef = bnext->coef;
 
 -                 s->expn = bnext->expn;
 
 -                 s->next = NULL;
 
 -                 q->next = s;
 
 -                 q = q->next;
 
 -                 bnext = bnext->next;
 
 -         }
 
 -         while(bnext == NULL&&anext!=NULL)
 
 -         {
 
 -                 s = (Polyn)malloc(sizeof(Polyn));
 
 -                 s->coef = anext->coef;
 
 -                 s->expn = anext->expn;
 
 -                 s->next = NULL;
 
 -                 q->next = s;
 
 -                 q = q->next;
 
 -                 anext = anext->next;
 
 -         }
 
 -         if(anext == NULL&&bnext == NULL)
 
 -         {
 
 -                 printf("完成\n");
 
 -         }
 
 -         SortPolyn(q);
 
 - }
 
  
- int main()
 
 - {
 
 -         Polyn Pa,Pb,Pc;
 
 -         InitPolyn(&Pa);
 
 -         CreatPolyn(&Pa,3);
 
 -         ShowPolyn(Pa);
 
 -         InitPolyn(&Pb);
 
 -         CreatPolyn(&Pb,2);
 
 -         ShowPolyn(Pb);
 
 -         InitPolyn(&Pc);
 
 -         AddPolyn(Pa,Pb,Pc);
 
 -         ShowPolyn(Pc);
 
 - }
 
 
  复制代码 |   
 
 
 
 |