建立升序的一元多项式
程序代码:#include<stdio.h>
#include<malloc.h>
struct node
{
int coef;
int expn;
struct node * next;
};
typedef struct node polyn;
polyn *createList()
{
int i=1;
int j,k;
polyn *head,*p,*q,*t;
p=head=(polyn *)malloc(sizeof(polyn));
p->expn=-1;
p->next=NULL;
printf("请输入第%d项的系数以及指数\n",i);
scanf("%d,%d",&j,&k);
while((j!=0)||(k!=0))
{if(j==0)
printf("系数不能为0!\n");
else if(k<=p->expn)
{printf("输入错误\n");}
else
{ if(p->next!=NULL)
{q=p->next;
while((k>q->expn)&&(q->next!=NULL))
{
p=q;
q=q->next;
}
if(k<q->expn)
{
t=(polyn *)malloc(sizeof(polyn));
t->coef=j;
t->expn=k;
t->next=q;
p->next=t;
}
if(k>q->expn)
{
t=(polyn *)malloc(sizeof(polyn));
t->coef=j;
t->expn=k;
t->next=NULL;
p->next=t;
}
if(k=q->expn)
{printf("输入错误\n请输入第%d项的系数以及指数\n",i);
scanf("%d,%d",&j,&k);}
}
else
{
t=(polyn *)malloc(sizeof(polyn));
t->coef=j;
t->expn=k;
t->next=NULL;
p->next=t;
}
i++;
p=head;
}
fflush(stdin); //清空缓冲区
printf("请输入第%d项的系数以及指数\n",i);
scanf("%d,%d",&j,&k);
}
return(head);
}
建立一元多项式,要求指数升序排序,想实现可以任意输入系数和指数,书上的代码是已经按指数升序来输入的。
求解答,应该怎么改?
[此贴子已经被作者于2016-9-21 23:04编辑过]







