求大神帮我把主函数补充完整
#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 static/image/common/back.gif
楼主能不能把问题描述清楚点,你这段程序是干嘛用的。实现什么功能等。说清楚,不要贴一段代码出来就可以了 ...
哦,不好意思....疏忽了.....代码是实现一元多项式p(x)=p0+p1x+p2x2+···+pnxn ,q(x)=q0+q1x+q2x2+···+qmxm的相加,O(∩_∩)O谢谢
页:
[1]