长春网站设计880元,网站建设的基本流程包括哪些,wordpress 商城小程序,做网站公司是干什么的实现思路#xff1a; 通过链表实现#xff0c;会更为简单直观。用链表中的每个结点表示多项式中的每一项#xff0c;多项式每一项都是由数据域#xff08;包含系数和指数#xff09;和指针域构成的#xff0c;所以在定义表示结点的结构体时#xff0c;可如下所示进行定义… 实现思路 通过链表实现会更为简单直观。用链表中的每个结点表示多项式中的每一项多项式每一项都是由数据域包含系数和指数和指针域构成的所以在定义表示结点的结构体时可如下所示进行定义
typedef struct PLnode{ //数据域coef 表示系数expn 表示指数 float coef; int expn; //指针域 struct PLnode *next;
}PLnode,*PLinkList; #include stdio.h
#include stdlib.h
typedef struct PLnode{//数据域coef 表示系数expn 表示指数float coef;int expn;//指针域struct PLnode *next;
}PLnode,*PLinkList;//一元多项式的链表表示创建函数输入 m 项的系数和指数建立表示一元多项式的有序链表L
void creatpolyn(PLinkList L, int m){int i;float coef;int expn;PLinkList tail,n;L-coef m;L-expn -1;tail L;for(i1 ; im ; i){n (PLinkList)malloc(sizeof(PLnode));scanf(%f,coef);scanf(%d,expn);n-coef coef;n-expn expn;n-next NULL;tail-next n;tail n;}
}
//完成多项式相加运算即 Lc La Lb并销毁一元多项式 Lb
PLinkList addpolyn(PLinkList La , PLinkList Lb){int x,len;float y;PLinkList Lc,pa,pb,pc,u;Lc La;len 0;pc Lc;//另papb 指向La 、Lb 的首元结点pa La-next;pb Lb-next;//通过 papb 遍历链表 La、Lb只有两指针同时存在时才需要讨论while(pa pb){x pa-expn-pb-expn;//判断pa 所指结点的指数与pb 所指结点指数的大小关系if(x0){//如果小则找去 qa 结点到Lc 上pc pa;len;pa pa-next;}//如果相等则判断两结点的系数和是否为0else if(x 0){// 请在下面的Begin-End之间补充代码完成一元多项式的相加。/********** Begin *********/y pa-coefpb-coef;if(y!0.0){pa-coef y; //如果不为 0修改 pa 结点的系数值同时链接到 LC 上pc pa;len;}//如果 y 值为0则从 pc 的链表中摘除该结点并释放该结点else{pc-next pa-next;free(pa);}pa pc-next; //更新完之后的pau pb;pb pb-next;free(u);/********** End **********/}//如果pb 所指结点指数值小则摘取pb所指结点到 LC链表上else{u pb-next;pb-next pa;pc-nextpb;pc pb;len;pb u;}}//由于是在 La 上进行一元多项式的加和所以如果运行过程 pa 不再有结点而pb 上有则需要将pb剩余结点链接到 Lc 上if(pb){pc-next pb;}//计算 Lc 的长度while(pc){pc pc-next;if(pc){len;}}//Lc 的头结点中记录Lc 链表的长度Lc-coef len;//加和完成的同时释放Lb 结点free(Lb);return Lc;
}
//根据链表存储信息。输出结点 q
void printpoly(PLinkList q){if(q-expn 0){printf(%.0f,q-coef);}else if(q-expn 1){if(q-coef 1){printf(x);}else if (q-coef -1){printf(-x);}else{printf(%.0f,q-coef);printf(x);}}else if (q-coef 1){printf(x^%d,q-expn);}else if(q-coef -1){printf(-x^%d,q-expn);}else{printf(%.0fx^%d,q-coef,q-expn);}
}
//输出一元多项式L
void printpolyn(PLinkList L){int n;PLinkList p;p L-next;n 0;while(p){n;if(n 1){printpoly(p);}else if(p-coef0){printf();printpoly(p);}else{printpoly(p);}p p-next;}
}
int main(){PLinkList La,Lb,Lc;int m,n;//根据 n 的值创建链表Lascanf(%d,n);La (PLinkList)malloc(sizeof(PLnode));creatpolyn(La,n);//根据 m 的值创建 Lbscanf(%d,m);Lb (PLinkList)malloc(sizeof(PLnode));creatpolyn(Lb,m);//输出La和Lbprintf(La);printpolyn(La);printf(\nLb);printpolyn(Lb);//计算LaLb结果保存在 Lc中printf(\n计算结果为);Lc addpolyn(La,Lb);printf(\nLc);printpolyn(Lc);return 0;
}