[C++] 二项式的合并 →→→→→进入此内容的聊天室

来自 , 2021-04-05, 写在 C++, 查看 125 次.
URL http://www.code666.cn/view/a5910243
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct Node{
  4.         double coef;
  5.         int expn;
  6.         Node *next;
  7. }*Sqlist;
  8.  
  9. void Createlist(Sqlist &ha,int n)
  10. {
  11.         double x;
  12.         int y;
  13.     ha=(Sqlist)malloc(sizeof(Node));
  14.         ha->next=NULL;
  15.         Sqlist pa=ha;
  16.         printf("请输入多项式的系数和指数:");
  17.         while(n){
  18.                 scanf("%lf%d",&x,&y);
  19.                 Sqlist p=(Sqlist)malloc(sizeof(Node));
  20.                 p->coef=x;
  21.                 p->expn=y;
  22.                 pa->next=p;
  23.                 pa=p;
  24.                 pa->next=NULL;
  25.                 n--;
  26.         }
  27. }
  28. void showlist(Sqlist p)
  29. {
  30.     p=p->next;
  31.     printf("p=");
  32.         while(p)
  33.         {
  34.             if(p->next)
  35.                 printf("%.1lf*X^%d+",p->coef,p->expn);
  36.                 else
  37.             printf("%.1lf*X^%d",p->coef,p->expn);
  38.         p=p->next;
  39.     }
  40.     printf("\n");
  41. }
  42. Sqlist add(Sqlist ha,Sqlist hb)
  43. {
  44.                 int t=0;
  45.         Sqlist pa=ha->next,pb=hb->next,pc;
  46.         Sqlist hc=(Sqlist)malloc(sizeof(struct Node));
  47.         hc->next=NULL;
  48.         pc=hc;
  49.                 while(pa!=NULL&&pb!=NULL)
  50.                 {
  51.                         if(pa->expn==pb->expn)
  52.                         {
  53.                                 t=pa->coef+pb->coef;
  54.                                 if(t)
  55.                                 {
  56.                                         Sqlist p=(Sqlist)malloc(sizeof(struct Node));
  57.                     p->coef=t;
  58.                         p->expn=pb->expn;
  59.                                         pc->next=p;
  60.                                         pc=p;
  61.                     pc->next=NULL;
  62.                                         pa=pa->next;
  63.                                         pb=pb->next;
  64.                                 }
  65.                                 else if(pa->expn!=pb->expn)
  66.                                 {
  67.                                         pa=pa->next;
  68.                                         pa=pb->next;
  69.  
  70.                                 }
  71.                         }
  72.                                 else if(pa->expn<pb->expn)
  73.                                 {
  74.                 Sqlist p=(Sqlist)malloc(sizeof(struct Node));
  75.                         p->coef=pa->coef;
  76.                             p->expn=pa->expn;
  77.                                         pc->next=p;
  78.                                             pc=p;
  79.                         pc->next=NULL;
  80.                                             pa=pa->next;
  81.  
  82.                                 }
  83.                 else if(pa->expn>pb->expn)
  84.                                         {
  85.                                                 Sqlist p=(Sqlist)malloc(sizeof(struct Node));
  86.                         p->coef=pb->coef;
  87.                             p->expn=pb->expn;
  88.                                         pc->next=p;
  89.                                             pc=p;
  90.                         pc->next=NULL;
  91.                                             pb=pb->next;
  92.  
  93.                                         }
  94.                         }
  95.                         while(pb!=NULL)
  96.                         {
  97.  
  98.                         Sqlist p=(Sqlist)malloc(sizeof(struct Node));
  99.                         p->coef=pb->coef;
  100.                             p->expn=pb->expn;
  101.                                         pc->next=p;
  102.                                             pc=p;
  103.                         pc->next=NULL;
  104.                                             pb=pb->next;
  105.  
  106.                         }
  107.                         while(pa!=NULL)
  108.                         {
  109.  
  110.                              Sqlist p=(Sqlist)malloc(sizeof(struct Node));
  111.                         p->coef=pa->coef;
  112.                             p->expn=pa->expn;
  113.                                         pc->next=p;
  114.                                             pc=p;
  115.                         pc->next=NULL;
  116.                                             pa=pa->next;
  117.                         }
  118.                         return hc;
  119.                 }
  120.  
  121. void paixu(Sqlist &head,int n)
  122. {
  123.         int i,j;
  124.         Sqlist p1=head->next,p2=p1,temp=(Sqlist)malloc(sizeof(struct Node));
  125.     printf("排序结果:");
  126.         for(i=0;i<n-1;i++,p1=p1->next)
  127.                 for(p2=p1->next,j=i;j<n-1;j++,p2=p2->next)
  128.                         if(p1->expn>p2->expn)
  129.                         {
  130.                             temp->coef=p2->coef;
  131.                             temp->expn=p2->expn;
  132.                             p2->coef=p1->coef;
  133.                             p2->expn=p1->expn;
  134.                             p1->coef=temp->coef;
  135.                             p1->expn=temp->expn;
  136.                         }
  137.  
  138. }
  139.  
  140. int main()
  141. {
  142.         Sqlist ha,hb,hc;
  143.         int i,j;
  144.         printf("请输入第一个二项式的项数:");
  145.         scanf("%d",&i);
  146.         Createlist(ha,i);
  147.         paixu(ha,i);
  148.         showlist(ha);
  149.  
  150.         printf("请输入第一个二项式的项数:");
  151.         scanf("%d",&j);
  152.         Createlist(hb,j);
  153.         paixu(hb,j);
  154.         showlist(hb);
  155.  
  156.  
  157.         hc=add(ha,hb);
  158.         printf("合并后的二项式:");
  159.         showlist(hc);
  160. }
  161.  
  162.  
  163.  
  164.  

回复 "二项式的合并"

这儿你可以回复上面这条便签

captcha