标题:求助!一元多项式问题!
只看楼主
梦想中国
Rank: 2
等 级:新手上路
威 望:5
帖 子:539
专家分:0
注 册:2006-2-26
 问题点数:0 回复次数:2 
求助!一元多项式问题!

请诸位帮我看看下面的程序是不是一元多项式程序,谢谢!
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
float coef;
int expn;
struct LNode *next;
}Lnode,*LinkList;

LinkList CreatePloy(LinkList L,float ccoef,int eexpn); //创建一元多项式函数
int compare(LinkList L,int eexpn);
void Output(LinkList L);

int main(void)
{
LinkList L=NULL;
Lnode P;
int i,n;

printf("Please input Ploy number: ");
scanf("%d",&n); //n代表一元多项式项数

for(i=1;i<=n;i++)
{
scanf("%f",&P.coef);
scanf("%d",&P.expn);
if(compare(L,P.expn)) //判断函数
L=CreatePloy(L,P.coef,P.expn);
Output(L);
}

return 0;
}

LinkList CreatePloy(LinkList L,float ccoef,int eexpn)
{
LinkList newPtr,previousPtr,currentPtr;

if((newPtr=(LinkList)malloc(sizeof(Lnode)))==NULL) //分配内存空间
{
exit(1);
}
newPtr->coef=ccoef;
newPtr->expn=eexpn;
newPtr->next=NULL;
previousPtr=NULL;
currentPtr=L;

while(currentPtr && currentPtr->expn < eexpn)
{
previousPtr=currentPtr;
currentPtr=currentPtr->next;
}
if(previousPtr==NULL) //链表为空时
{
newPtr->next=L;
L=newPtr;
}
else
{
previousPtr->next=newPtr;
newPtr->next=currentPtr;
}

return L;
}
int compare(LinkList L,int eexpn) //判断是否已经存在于多项式中
{
int flag=1;

while(L)
{
if(L->expn==eexpn) //如果已经存在于多项式中的情况
{
flag=1;
break;
}
L=L->next;
}

return flag;
}

void Output(LinkList L)
{
while(L)
{
if(L->expn==0) //当指数项为0时
{
printf("%.f->",L->coef);
L=L->next;
}
else
{
printf("%.0fx%d->",L->coef,L->expn);
L=L->next;
}
}
printf("NULL\n\n");
}

搜索更多相关主题的帖子: void compare include number 
2006-03-21 00:27
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
得分:0 

[CODE]
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
float coef;
int expn;
struct LNode *next;
}Lnode,*LinkList;

LinkList CreatePloy(LinkList L,float ccoef,int eexpn);

void Output(LinkList L);

int main(void)
{
LinkList L=NULL;
Lnode P;
int i,n;

printf("Please input Ploy number: ");
scanf("%d",&n);

for(i=1;i<=n;i++)
{
scanf("%f",&P.coef);
scanf("%d",&P.expn);
L=CreatePloy(L,P.coef,P.expn); /*没必要判断,一般多项式是直接排列好的,没重复指数*/
}
Output(L);
return 0;
}

LinkList CreatePloy(LinkList L,float ccoef,int eexpn)
{
LinkList newPtr,previousPtr,currentPtr;

if((newPtr=(LinkList)malloc(sizeof(Lnode)))==NULL)
{
exit(1);
}
newPtr->coef=ccoef;
newPtr->expn=eexpn;
newPtr->next=NULL;
previousPtr=NULL;
currentPtr=L;

while(currentPtr && currentPtr->expn >eexpn) /* 多项式一般是按指数降幂排列*/
{
previousPtr=currentPtr;
currentPtr=currentPtr->next;
}
if(previousPtr==NULL)
{
newPtr->next=L;
L=newPtr;
}

else if( currentPtr==NULL)
{
previousPtr->next=newPtr;
newPtr->next=NULL;
}


else
{
previousPtr->next=newPtr;
newPtr->next=currentPtr;
}

return L;
}

void Output(LinkList L)
{
while(L)
{
printf("%fx(%d)->",L->coef,L->expn); /*加括号便于区分*/
L=L->next;
}
printf("NULL\n\n");
}

[/CODE]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-21 02:02
Element_Ray
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-3-21
得分:0 

因为是才学数据结构,所以楼上的程序不是很清楚,高手可以加点注解吗?谢了!

2006-03-21 15:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-51707-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.056787 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved