于删除节点i*/
p=getelem_potynode(l,i-1);q=p->next;
if(q) /*如果p为空,则说明节点p也就是节点i-1就是尾节点,节点i实际并不存在*/
{p->next=q->next;
free(q);return 1;}
else
return 0;}/*对输入的多项式la,lb进行相加,结果为lc,返回指向lc头节点的指针*/
potynode * add_potynode(potynode *la,potynode *lb)
{potynode *lc,*q1,*q2,*r,*s,*p;
int x=1;q1=la->next;q2=lb->next;lc=la;
lc->next=null;/*指针r是当前指针便于进行各种操作*/
r=lc;
while(q1&&q2) /*当多项式la,和lb都没有结束的时候*/
{if(q1->expn<q2->expn)
{ s=q1;q1=q1->next;}
else if(q1->expn>q2->expn)
{s=q2;q2=q2->next;}/*指数相同,相加*/
else{ q1->coef+=q2->coef;
s=q1;q1=q1->next; q2=q2->next;}/*结果连接到多项式lc*/
s->next=null;r->next=s;r=s;}/*如果lb已结束,把la剩余的部分连接到lc上*/
if(q1) r->next=q1;
if(q2) r->next=q2;/*去除多项式中系数为零的项,我对代码作了小的修改*/
p=lc->next;
while(p->next)
{if(p->coef==0)
{ p=p->next;
delete_potynode(lc,x);}
else
{ p=p->next;x++;}}
return lc;}/*打印多项式*/
void print_potynode(potynode *l)
{ int i;potynode *p=l->next;
for(i=0;i<getlength(l);i++)
{ printf("%fx%d",p->coef,p->expn);
if(p->next==null)
return;
else printf("+");
p=p->next;}}
void main()
{ potynode *la,*lb,*lc;
int x;
printf("input la(end by 0):\n");
la=creat_potynodetail();
printf("f(la)=");
print_potynode(la);
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页