CH2_7.C
上传用户:lgb298
上传日期:2013-03-22
资源大小:1025k
文件大小:1k
源码类别:

软件工程

开发平台:

C/C++

  1. #include <alloc.h>
  2. #include <stdio.h>
  3. typedef struct node
  4. {  int coef,exp;
  5.    struct node *next;
  6. }JD;
  7. void  add_poly(JD *pa,JD *pb)
  8. {  JD *p,*q,*u,*pre;
  9.    int x;
  10.    p=pa->next;
  11.    q=pb->next;
  12.    pre=pa;
  13.    while((p!=NULL) && (q!=NULL))
  14.    {   if(p->exp<q->exp)
  15.        {   pre=p;  p=p->next;}
  16.        else if(p->exp==q->exp)
  17.        {  x=p->coef+q->coef;
  18.   if(x!=0){ p->coef=x;  pre=p;}
  19.   else    { pre->next=p->next;  free(p);}
  20.   p=pre->next;
  21.   u=q;
  22.   q=q->next;
  23.   free(u);
  24.        }
  25.        else
  26.        {    u=q->next;q->next=p;pre->next=q;
  27.     pre=q;  q=u;
  28.        }
  29.     }
  30.     if(q!=NULL)
  31. pre->next=q;
  32.     free(pb);
  33. }
  34. JD* dlbjl(int a[],int n)
  35. {
  36. JD *s,*h;
  37. int i;
  38. h=(JD*)malloc(sizeof(JD));
  39. h->coef=h->exp=-1;
  40. h->next=NULL;
  41. for(i=n;i>0;i--)
  42. {s=(JD*)malloc(sizeof(JD));
  43.  s->coef=a[2*i-2];
  44.  s->exp=a[2*i-1];
  45.  s->next=h->next;
  46.  h->next=s;
  47. }
  48. return (h);
  49. }
  50. void dlbxs(JD *h)
  51. {   JD *p;
  52.     p=h->next;
  53.     while(p!=NULL)
  54.     {  printf("%d,%dt",p->coef,p->exp);
  55.        p=p->next;
  56.     }
  57.     printf("n");
  58. }
  59. void main()
  60. {  static int a[]={7,0,3,1,9,8,5,17};
  61.    static int b[]={8,1,22,7,-9,8};
  62.    JD *heada,*headb;
  63.    int na=4,nb=3;
  64.    heada=dlbjl(a,na);
  65.    dlbxs(heada);
  66.    headb=dlbjl(b,nb);
  67.    dlbxs(headb);
  68.    add_poly(heada,headb);
  69.    dlbxs(heada);
  70. }