鱼C论坛

 找回密码
 立即注册
查看: 2843|回复: 2

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

[复制链接]
发表于 2013-12-4 19:49:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

typedef struct
{
        float  coef;                           /*系数部分*/
        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);   
}
void  output_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) ;
                        else  printf("%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 ;   float  x ;
    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()
{
       
}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-7 14:34:01 | 显示全部楼层
楼主能不能把问题描述清楚点,你这段程序是干嘛用的。实现什么功能等。说清楚,不要贴一段代码出来就可以了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-7 21:21:40 | 显示全部楼层

哦,不好意思....疏忽了.....代码是实现一元多项式p(x)=p0+p1x+p2x2+···+pnxn ,q(x)=q0+q1x+q2x2+···+qmxm的相加,O(∩_∩)O谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 01:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表