回 帖 发 新 帖 刷新版面

主题:求助:这个多项式相乘哪错了,谢谢,编译器提示只有一个错误

#include<stdio.h>
struct list{
        float coef;
        int expn;
        struct list *nextptr;
};

typedef struct list polynomial;
typedef polynomial *P;

void addC(P *,int ,int);
void creatpolyn(P *,P*);
void add(P *);
void print(P*);
void mutiply(P*,P*,P*);

main()
{
      P a,b,c;
      c=NULL;
//     printf("");
      creatpolyn(&a,&b);
      
      print(&a);     print(&b);
      mutiply(&a,&b,&c);
      print(&c);
      }
      
void creatpolyn(P * aptr,P * bptr)
{
     
     P * ahead, * bhead;
     ahead=aptr; 
     bhead=bptr;
     printf("please input  polynomials  a\n");
     add( aptr);
     printf("please input  polynomials  b\n");
     add(bptr);
     aptr=ahead;
     bptr=bhead;
           
     
}

void add(P * ptr)
{
     int coef1,expn1;
     P  newptr;
     while (1) {
     newptr=(P)mallac(sizeof(P));
     if (!newptr) {
                  newptr->nextptr=NULL;
                  printf("please input coef and expn,when expn=9999,exit\n");
                  scanf("%d%d",&coef1,&expn1);
                  if (expn1==9999)
                     break;
                  newptr->coef=coef1;
                  newptr->expn=expn1;
                 ptr->nextptr= newptr;
                 * ptr=ptr->nextptr;
                  }
     }
}

void mutiply(P *ap,P *bp,P *cp)
{
      P ahead,bhead;
     ahead=ap; 
     bhead=bp;
  
     while (1)  {
           addC(P *cp,ap->expn+bp->expn,ap->coef * bp->coef);
          if (bp)
              bp=bp->nextptr;
              else {
                   bp=bhead;
                   ap=ap->nextptr;
                   }
                   else if (bp&&ap) {
                          ap=ahead;
                          bp=bhead;}
                              
                            break;
     
          
}

void addC(P * c,int expn2,int coef2)
{
    
    P chead,newptr,pre;
    chead=c;
    while (c)  {
         pre=c;
         if (c->expn==expn2)
             c->coef=coef2;
             else c=c->nextptr;
       }
    c=pre;
    
    newptr=(P)mallac(sizeof(P));
     if (!newptr) {
                  newptr->nextptr=NULL;               
                  newptr->coef=coef2;
                  newptr->expn=expn2;
                  c->nextptr=newptr;
                 
                  }
     
         }

//它总是同一个错误,应该是语法问题,我是在dev-c的环境下编的。 谢谢

回复列表 (共1个回复)

沙发

真的只有一个错误么???

newptr=(P)mallac(sizeof(P)); 
=======================
应该是malloc,还有头文件stdlib.h还未包含,
你好像还没搞清楚P是什么,P就相当于struct list*
......

void mutiply(P *ap,P *bp,P *cp)
{
    P ahead,bhead;
    ahead=ap; 
    bhead=bp;   //类型不同不能这样赋值
    while (1)  {
        addC(P *cp,ap->expn+bp->expn,ap->coef * bp->coef);
        if (bp)
            bp=bp->nextptr;
            else {
                bp=bhead;
                ap=ap->nextptr;
            }
            else if (bp&&ap) {  //???????
                 ap=ahead;
                  bp=bhead;}
    break;   //少了个}
}
错误N多,先自己找吧.

我来回复

您尚未登录,请登录后再回复。点此登录或注册