简单计算器代码


void InitPolylist(Polylist L)

{

    L = (Polylist)malloc(sizeof(Polynode));

    L ->next=NULL;

}

Polylist CreatePolylist()

{

    float xishu =1;

    int zhishu = 0;

   

    Polylist head,tail,p;

    head = (Polylist)malloc(sizeof(Polynode));

    head->next =NULL;

    tail =head;

    while(1){

        p = (Polylist)malloc(sizeof(Polynode));

        p->coef = xishu;

        p->exp = zhishu;

        tail->next=p;

        tail = p;

        scanf("%f %d",&xishu,&zhishu);  

        if(xishu==0&&zhishu==1){

            break;

        }

    }

    tail->next =NULL;

    return head;

}

int LengthPolylist(Polylist L)

{

    int n = 0;

    Polylist p = L;

    while(p->next!=NULL){

        n++;

        p = p->next;

    }

    return n;

}

void OutputPolylist(Polylist L)

{

    printf("inlcude %d coef/exp list is:\n",LengthPolylist(L));

    Polylist p = L->next;

    while(p!=NULL){

        if(p->exp==0){

            printf("%.2f,%d\n",p->coef,(p->exp+1));

            p = p->next;

            continue;

        }

        printf("%.2f,%d\n",p->coef,p->exp);

        p = p->next;

    }

     }

     

Polylist AddPolylist()

{

    Polylist LA = CreatePolylist();

    Polylist LB = CreatePolylist();

    Polylist pa = LA->next;

Polylist pb = LB->next;

    Polylist LC,pc,qc;

    pc = (Polylist)malloc(sizeof(Polynode));

    pc ->next=NULL;

    LC = pc;

    while(pa != NULL && pb != NULL)

        {

            qc = (Polylist)malloc(sizeof(Polynode));

            if(pa->exp < pb->exp)

            {

                qc->coef = pa->coef;

                qc->exp = pa->exp;

                pa = pa->next;

            }

            else if(pa->exp == pb->exp)

            {

                qc->coef = pa->coef + pb->coef;

                qc->exp = pa->exp;

                pa = pa->next;

                pb = pb->next;

            }

            else

            {

                qc->coef = pb->coef;

                qc->exp = pb->exp;

                pb = pb->next;

            }

            if(qc->coef != 0&&qc->exp!=1)

            {

                qc->next = pc->next;

                pc->next = qc;

                pc = qc;

            }

            else free(qc);

        }

     

        while(pa != NULL)

        {

            qc = (Polylist)malloc(sizeof(Polynode));

            qc->coef = pa->coef;

            qc->exp= pa->exp;

            pa = pa->next;

            qc->next = pc->next;

            pc->next = qc;

            pc = qc;

        }

   

        while(pb!= NULL)

        {

            qc = (Polylist)malloc(sizeof(Polynode));

            qc->coef= pb->coef;

            qc->exp = pb->exp;

            pb = pb->next;

            qc->next = pc->next;

            pc->next = qc;

            pc = qc;

        }

        return LC;  

}

void ComputePolylist(Polylist L)/*计算多项式在x=%d的值*/

{

    float xd;

    float sum = 0;

    Polylist p = L->next;

    scanf("%f",&xd);

    while(p!=0){

        sum+=p->coef*pow(xd,p->exp);

        p = p->next;

    }

    printf("ComputePolylist in x=%.2f result is:%.2f\n",xd,sum);

}

void DestroyPolylist(Polylist L)

{

    printf("destory");

    Polylist p,head = L;

    while(p!=0){

        head = p->next;

        free(p);

        p=head;

    }

    L = NULL;

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM