多项式的四则运算(数据结构)(3)

2019-01-19 14:26

多项式的四则运算

if(rear->next->next

PolyNode *pa , *pb , *rear , *s ; PolyC = (PolyNode

==NULL) return; //p为最后一个元素且指数最小,提前返回

}

while(prior->next != temp) prior =

}

*)malloc(sizeof(PolyNode));

pa = PolyA->next; pb = PolyB->next; rear = PolyC; rear->next = NULL; while(pa && pb) {

if(pa->exp == pb->exp) {

sum = pa->coef-pb->coef; if(fabs(sum)>1e-6) //如果两

prior->next ; }

//多项式相减,返回差多项式链表头指针 PolyList PolySub(PolyList PolyA , PolyList PolyB) {

PolyList PolyC ; SortPoly(PolyA); SortPoly(PolyB);

float sum =0 ;//存储两项系数差 }

prior->next = temp->next; temp->next = rear->next ; rear->next = temp; rear = rear->next ;

两系数不为0,则将两项和存入s中,并插入PolyC尾部

{

s = (PolyNode

*)malloc(sizeof(PolyNode));

s->coef = sum; s->exp = pa->exp; rear->next = s; rear = s;

11 多项式的四则运算

}

}

//pa,pb指针后移 pa = pa->next; pb = pb->next;

}

}

s->coef = -pb->coef; s->exp = pb->exp; rear->next = s; pb = pb->next; rear = s ;

else if(pa->exp>pb->exp) //若

pa指数大于pb指数,将pa结点副本插入到PolyC尾部

{

s = (PolyNode

while(pa) {

s = (PolyNode

*)malloc(sizeof(PolyNode));

}

else //若pb指数大于pa指数,

s->coef = pa->coef; s->exp = pa->exp; rear->next = s ; rear = s ; pa = pa->next;

*)malloc(sizeof(PolyNode));

} while(pb) {

s = (PolyNode s->coef = pa->coef; s->exp = pa->exp; rear->next = s; pa = pa->next; rear = s ;

将pb结点副本插入到PolyC尾部

{

s = (PolyNode

*)malloc(sizeof(PolyNode));

s->coef = -pb->coef;

12 *)malloc(sizeof(PolyNode));

多项式的四则运算

}

}

s->exp = pb->exp; rear->next = s; pb = pb->next; rear = s ;

else printf(\ \

p->coef , p->exp);

}

if(fabs(p->coef)>1e-6)printf(\

}

else printf(\输出分割点 p = p->next ;

rear->next = NULL; return PolyC;

\ }

if(Poly == NULL) {printf(\PolyNode *p=Poly->next ;

if(p == NULL){printf(\ //

//多项式相乘,结果由PolyC返回 PolyList PolyMutiply(PolyList PolyA , PolyList PolyB) {

if(fabs(p->coef)>1e-6) {

if(fabs(p->next->coef)>1e-6)

*s;

if(PolyA==NULL || PolyB==NULL) PolyList PolyC;

PolyNode *pa , *pb , *pc_pre , *pc , printf(\

//输出多项式

void DisplayPolyList(PolyList Poly) {

如果链表为空提前退出

while(p->next!=NULL) {

return NULL; //若某一个多项式为空,返回

printf(\

13 多项式的四则运算

PolyC =

pb = PolyB->next ; while(pb) {

//两项对应相乘,结果存入到

(PolyNode*)malloc(sizeof(PolyNode));

pc = PolyC ; pc->next = NULL;

if(PolyA->next==NULL || PolyB->next==NULL) return PolyC;

SortPoly(PolyA); SortPoly(PolyB); pa = PolyA->next ; pb = PolyB->next; s =

s中

pc = PolyC->next; if(pa == PolyA->next &&

pb==PolyB->next) //避免重复插入第一个结点

{ } s =

pb=pb->next; if(pb == NULL) break;

(PolyNode*)malloc(sizeof(PolyNode));

s->coef = pa->coef * pb->coef ; s->exp = pa->exp + pb->exp ; if(pc->next == NULL) {

pc->next = s ; pc =s ;

pc->next = NULL ;

(PolyNode*)malloc(sizeof(PolyNode));

s->coef = pa->coef *

pb->coef ;

s->exp = pa->exp +

pb->exp ;

//查找s合适的插入位置,使

} //直接插入第一个结点 while(pa) {

得插入后PolyC仍为升序排列

14 多项式的四则运算

while( pc && pc->exp >

//多项式相除,结果存到PolyC中,商和余数用系数为0的结点分开

PolyList PolyDivide(PolyList PolyA , PolyList PolyB) {

if(!PolyA || !PolyB) return NULL; if(PolyB->next == NULL){printf(\

s->exp) { pc_pre = pc ; pc=pc_pre->next ;}

if(pc

==NULL){pc_pre->next=s ; s->next =NULL;pb=pb->next;}

else if( pc->exp <

s->exp){pc_pre->next = s ; s->next = pc ; pb=pb->next; }

else if(s->exp == pc->exp ) {

pc->coef += s->coef ; free(s);

除项为空!\\n\

PolyList PolyT1 , PolyT2 , pt , s ,

PolyC , p , s_pre;

PolyC =

(PolyList)malloc(sizeof(PolyNode));

PolyC->next=NULL;

if(PolyA->next==NULL) return PolyC; p = PolyA->next; PolyT1 =

if(fabs(pc->coef)<1e-6 ){pc_pre->next

= pc->next ; free(pc);} }

}

return PolyC;

}

pa = pa->next;

}

pb = pb->next;

(PolyList)malloc(sizeof(PolyNode));

pt = PolyT1;

s_pre=(PolyList)malloc(sizeof(PolyNo

de));

15


多项式的四则运算(数据结构)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:建筑装饰工程技术专业(室内设计)人才培养计划 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: