日期:2014-05-17  浏览次数:20669 次

c'x'x0030错误求解答在线等
#include<stdio.h>
#include<malloc.h>


//**************创建结构体*************************
typedef struct Node
{
float a;         //系数
int b;           //指数
struct Node *next;//指针域
}*No,Node;  // No为指针类型


//**************构造多项式*************************
void Insert(No p,No h)
{
No q1,q2;
if(p->a==0)
free(p);
else
{
q1=h;
q2=h->next;
while(q2&&p->b<q2->b)
{
q1=q2;
q2=q2->next;
}
if(q2&&p->b==q2->b)
{
q2->b=q2->b+p->b;
    free(p);
if(q2->a==0)
{
q1->next=q2->next;
    free(q2);
}
}
else
{
p->next=q2->next;
q1->next=p;
}
}
}//多项式构造函数
No ConstructNode(No head,int d)
{
int i;
No p;
p=(No)malloc(sizeof(struct Node));
p=head;
head->next=NULL;//显示在这出错
for(i=0;i<d;i++)
{
p=(No)malloc(sizeof(struct Node));
printf("请输入第%d项的系数和指数",i+1);
scanf("%f %d",&p->a,&p->b);//获得数据
Insert(p,head);//调用函数
}
return head;
}





//****************输出多项式***********************
void PrintfNode(No p)
{
No q;
q=p->next;
int flag=1;     //项数计数
if(!q)
{
putchar('0');
printf("\n");
}
while(q)
{
if(q->a>0&&flag!=1)putchar('+');

if(q->a==1)
{
if(q->b==0)putchar('1');
else if(q->b==1)putchar('X');
else printf("X^%d",q->b);
}
else
{
if(q->a==-1)
{
if(q->b==0)putchar('-1');
else if(q->b==1)putchar('-X');
else printf("-X^%d",q->b);
}
else
{
if(q->b==0)printf("%f",q->a);
else if(q->b==1)printf("%fX",q->a);
else printf("%fX^%d",q->a,q->b);
}
q=q->next;
flag++;
}
}
printf("\n");
}//输出




//******************情况分析**************************
int compare(No pa,No pb)
{
if(pa&&pb)
{
if(!pb||pa->b>pb->b)return 1;
else if(!pa||pa->b<pb->b)return -1;
else return 0;