会编程的进来看看这个代码哪里有问题。

来源:百度知道 编辑:UC知道 时间:2024/06/05 06:08:09
#include "stdio.h"
#include <stdlib.h>

typedef struct Node{
int exp;
int xi;
Node *next;
}*Pol;

int CreatPolynomial(Pol &Po){//创建多项式链表,降幂排列
Pol Head,p,pre,s;
Head=(Pol)malloc(sizeof(Node));
int num=0;
Head->exp=999;Head->next=NULL;

while(1){s=(Pol)malloc(sizeof(Node));
p=Head;
printf("请输入下一项系数\n");
scanf("%d",&s->xi);
if ((s->xi)==0)
{printf("输入结束!\n");break;}
else {printf("请输入指数");
scanf("%d",&s->exp);}
while(s->exp<p->exp)
{if(p->next==NULL){s->next=p->next;p->next=s;continue;}
else{pre=p;p=p->next;}
}
if (s->exp==p->exp){printf("输入无效!\n");continue;}输入指数已存在,本项无效
else{s->next=p;pre->next=s;++num;
}
}
return num

#include "stdio.h"
#include <stdlib.h>

typedef struct Node{
int exp;
int xi;
Node *next;
}*Pol;

int CreatPolynomial(Pol &Po){//创建多项式链表,降幂排列
Pol Head,p,pre,s;
Head=(Pol)malloc(sizeof(Node));
int num=0;
Head->exp=999;
Head->xi = 0;//这里最好初始化
Head->next=NULL;

while(1){s=(Pol)malloc(sizeof(Node));
p=Head;
printf("请输入下一项系数\n");
scanf("%d",&s->xi);
if ((s->xi)==0)
{printf("输入结束!\n");break;}
else {printf("请输入指数");
scanf("%d",&s->exp);}

while(s->exp < p->exp)
{
pre=p;p=p->next;
if(p==NULL)
break;
}
if (p!=NULL && s->exp==p->exp){printf("输入无效!\n");continue;}//输入指数已存在,本项无效
s->next=p;pre->next=s;num++;//统一在循环结束后插入
}
Po = Head->next;
retu