多项式计算要求:1主要功能:(1)输入并建立多项式;(2)输出多项式;(3)两个多项式相加,建立并输出和多项式;(4)两

1个回答

  • #include

    #include

    typedef struct

    {

    float coef;//系数

    int expn;//指数

    }

    ElemType;

    typedef struct LNode

    {

    ElemType data;

    struct LNode *next;

    }

    LNode,*LinkList;

    LinkList InitList()//创建链表

    {

    LinkList L;

    L=(LinkList)malloc(sizeof(LNode));

    L->next=NULL;

    return(L);

    }

    void Creat(LinkList L,ElemType x)//创建多项式

    {

    LinkList s,p;

    s=(LinkList)malloc(sizeof(LNode));

    s->data=x;

    p=L;

    while(p->next)

    p=p->next;

    s->next=NULL;

    p->next=s;

    }

    void Insert(LinkList L,LNode p)//插入链表

    {

    LinkList q,pc;

    pc=(LinkList)malloc(sizeof(LNode));

    *pc=p;

    q=L;

    while(q->next)

    q=q->next;

    pc->next=q->next;

    q->next=pc;

    }

    void AddPolyn(LinkList pa,LinkList pb,LinkList pc)//多项式求和

    {

    LinkList qa,qb;

    LNode qc;

    float sum;

    int a,b;

    qa=pa->next;

    qb=pb->next;

    while(qa&&qb)

    {

    a=qa->data.expn;

    b=qb->data.expn;;

    if(anext;

    }

    if(a==b)

    {

    sum=qa->data.coef+qb->data.coef;

    if(sum!=0)

    {

    qc=*qa;

    qc.data.coef=sum;

    Insert(pc,qc);

    qa=qa->next;

    qb=qb->next;

    }

    else

    {

    qa=qa->next;

    qb=qb->next;

    }

    }

    if(a>b)

    {

    Insert(pc,*qb);

    qb=qb->next;

    }

    while(qa)

    {

    Insert(pc,*qa);

    qa=qa->next;

    }

    while(qb)

    {

    Insert(pc,*qb);

    qb=qb->next;

    }

    }

    }

    void Plus(LinkList pa,LinkList pb,LinkList pc)//多项式的差

    {

    LinkList qb;

    qb=pb->next;

    while(qb)

    {

    qb->data.coef=-(qb->data.coef);

    qb=qb->next;

    }

    AddPolyn(pa,pb,pc);

    }

    void Print(LinkList L)//输出多项式

    {

    LinkList p;

    p=L->next;

    while(p->next)

    {

    printf("%fx^%d+",p->data.coef,p->data.expn);

    p=p->next;

    }

    printf("%fx^%d",p->data.coef,p->data.expn);

    }

    void main()//主函数

    {

    LinkList La,Lb,Lc,Ld;ElemType c;

    int a,i;

    La=InitList();

    Lb=InitList();

    Lc=InitList();

    Ld=InitList();

    printf("输入La的项数:");

    scanf("%d",&a);

    for(i=0;i