多项式建立中的createpolyn函数问题
希望通过CreatePolyn 建立一个多项式,实现用户输的节点按指数的大小从小到大排列,若输入的的指数和存在的某个节点的指数相同,则改变那个节点的指数,同时不插入这个节点。运行时,PrintfPolyn 无法正确显示输入的多项式,请高人指点,谢谢了#include<stdio.h>
#include<malloc.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define N 3
typedef int Status;
typedef struct Lnode{
float coef;
int expn;
struct Lnode *next;
}Lnode,*polynomial;
Status CreatePolyn(polynomial &l,int M){
int i=1;
polynomial s,p,q;
l=(polynomial)malloc(sizeof(Lnode));
if(!l) return(OVERFLOW);
l->next=NULL;
//插入第一个节点
q=(polynomial)malloc(sizeof(Lnode));
if(!q) return(OVERFLOW);
printf("请用户输入多项式中第%d项的系数及指数,中间用空格隔开:\n",i);
scanf("%f %d",&(q->coef),&(q->expn));
q->next=l->next;
l->next=q;
//其他节点在选择插入位置时考虑指数大小
for(i=2;i<=M;i++)
{
p=l->next;//p每次指向第一个结点
q=(polynomial)malloc(sizeof(Lnode));
if(!q) return(OVERFLOW);
printf("请用户输入多项式中第%d项的系数及指数,中间用空格隔开:\n",i);
scanf("%f %d",&(q->coef),&(q->expn));
if(q->expn<p->expn){//在p点前插
q->next=p;
l->next=q;
}
else{
while((p->expn<q->expn)&&(p->next!=NULL))
{
s=p;
p=p->next;
}
if(q->expn==p->expn)
{
p->coef+=q->coef;
free(q);
}
else if(p->expn>q->expn)
{
q->next=s->next;
s->next=q;
}
else
{
q->next=p->next;
p->next=q;
}
}
}
return OK;
}
Status PrintPolyn(polynomial &l){
polynomial p;
p=l->next;
printf("该多项式是:\n");
while(p){
printf("%f*X[%d] ",p->coef,p->expn);
}
return OK;
}
void main()
{
polynomial l;
if(CreatePolyn(l,N))
printf("createpolyn...");
PrintPolyn(la);
}