求C++ 数据结构大神来解答

2025-01-07 18:05:13
推荐回答(1个)
回答1:

Polynomial CreateList()函数中有问题:最后总会有一个没有数据的空节点(这就是输出最后一行奇怪的数据。),并且最后一个结点的next域没有置空,所以主函数中的do{
printf("%.2f %d\n",h->coef,h->exp);
h=h->next;
}while(h!=NULL);
会出问题。
建议修改为:
Polynomial CreateList(){
float x;
int y;
Polynomial head=NULL, p,q;
while(1){ // x=0并且y=0 代表结束输出,但x,y没有初始化,而且循环中有break
scanf("%f%d",&x,&y);
if(x==0.0&&y==0) break;
p = (Polynomial)malloc(sizeof(PolyNode));
if(head==NULL)head=q=p;
else{q->next=p;q=p;}
p->coef=x;
p->exp =y;
}
p->next=NULL;
return head;
}