梦星雨 发表于 2013-12-4 19:49:46

求大神帮我把主函数补充完整

#include "stdio.h"
#include "malloc.h"
#define MaxSize 100
typedef int DataType;

typedef struct
{
        floatcoef;                           /*系数部分*/
        int    expn;                           /*指数部分*/
} ElemType ;

typedef struct Ploy
{
        ElemType data;
        struct Ploy*next ;
} Ploy ;

Ploy*create_Ploy_LinkList(void)          /*尾插入法创建单链表,链表的头结点head作为返回值*/
{
        float coef ;
        int expn ;
        Ploy*head, *p, *q;
        head=p=(Ploy *)malloc(sizeof(Ploy));
        p->next=NULL;                           /*创建单链表的表头结点head*/
       
        while (1)
        {   
                printf("\n请输入一元多项式的系数(0.0表示结束): ") ;
                scanf("%f",&coef);
                if (coef==0.0)break ;
                else
                {
                        printf("\n请输入一元多项式的指数: ") ;
                        scanf("%d",&expn);
                        q=(Ploy*)malloc(sizeof(Ploy));
                        q->data.coef=coef ;                        /*指数部分赋值*/
                        q->data.expn=expn ;                        /*系数部分赋值*/
                        q->next=p->next;
                        p->next=q;
                        p=q ;                                              /*钩链,新创建的结点总是作为最后一个结点*/
                }
        }
        return(head);   
}
voidoutput_Ploy_LinkList(Ploy *L, char ch)         /*输出以L为头结点的单链表中所有结点的值*/
{
        Ploy *p;
           p=L->next;                                       /*使p指向第一个结点*/
           if (p==NULL)printf("\n此多项式为空!!\n\n") ;
           else
           {
                printf("\n%c(x)=",ch) ;
                while(p!=NULL)
                {   
                        if (p->data.coef>0)
                                printf("%+g",p->data.coef) ;
                        elseprintf("%g",p->data.coef) ;
                        if (p->data.expn!=0)
                        {
                                printf("X^") ;
                                printf("%d",p->data.expn);
                        }
                        p=p->next;
                }
        }                                                /*移动指针p   */
        printf("\n\n") ;
}

Ploy*add_ploy(Ploy*La,Ploy*Lb)      
{   
        Ploy*Lc , *pc , *pa , *pb , *p ;   floatx ;
    Lc=pc=(Ploy *)malloc(sizeof(Ploy)) ;
    pa=La->next ; pb=Lb->next ;
    while (pa!=NULL&&pb!=NULL)
        {
                if(pa->data.expn<pb->data.expn)
                {
                        p=(Ploy *)malloc(sizeof(Ploy)) ;
            p->data.coef=pa->data.coef ; p->data.expn=pa->data.expn ;
                        p->next=NULL ;                /*生成一个新的结果结点并赋值*/
                        pc->next=p ; pc=p ; pa=pa->next ;
                }                                    /*生成的结点插入到结果链表的最后,pa指向下一个结点*/
                if(pa->data.expn>pb->data.expn)
                {
                        p=(Ploy *)malloc(sizeof(Ploy)) ;
                        p->data.coef=pb->data.coef ; p->data.expn=pb->data.expn ;
                        p->next=NULL ;               /*生成一个新的结果结点并赋值*/
                        pc->next=p ; pc=p ; pb=pb->next ;   
                }                                    /*生成的结点插入到结果链表的最后,pb指向下一个结点*/
                if(pa->data.expn==pb->data.expn)
                {
                        x=pa->data.coef+pb->data.coef ;
                        if(x<=1.0e-6)         /*系数和为0,pa, pb分别直接后继结点*/
                        {
                                pa=pa->next ; pb=pb->next ;   }
                        else                         /*若系数和不为0,生成的结点插入到结果链表的最后, pa, pb分别直接后继结点*/
                        {
                                p=(Ploy *)malloc(sizeof(Ploy)) ;
                                p->data.coef=x ; p->data.expn=pb->data.expn ;
                                p->next=NULL ;      
                                pc->next=p ; pc=p ;
                                pa=pa->next ; pb=pb->next ;
                        }
                }
        }                                 
        if(pb!=NULL)
                while(pb!=NULL)
                {   
                        p=(Ploy *)malloc(sizeof(Ploy)) ;
                        p->data.coef=pb->data.coef ; p->data.expn=pb->data.expn ;
                        p->next=NULL ;                  
                        pc->next=p ; pc=p ; pb=pb->next ;
                }
                return(Lc);
}

void main()
{
       
}


小亮1201 发表于 2013-12-7 14:34:01

楼主能不能把问题描述清楚点,你这段程序是干嘛用的。实现什么功能等。说清楚,不要贴一段代码出来就可以了。

梦星雨 发表于 2013-12-7 21:21:40

小亮1201 发表于 2013-12-7 14:34 static/image/common/back.gif
楼主能不能把问题描述清楚点,你这段程序是干嘛用的。实现什么功能等。说清楚,不要贴一段代码出来就可以了 ...

哦,不好意思....疏忽了.....代码是实现一元多项式p(x)=p0+p1x+p2x2+···+pnxn ,q(x)=q0+q1x+q2x2+···+qmxm的相加,O(∩_∩)O谢谢
页: [1]
查看完整版本: 求大神帮我把主函数补充完整