一元多项式运算c语言版.doc
《一元多项式运算c语言版.doc》由会员分享,可在线阅读,更多相关《一元多项式运算c语言版.doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#include #include #include #define OK 1;#define ERROR 0;#define TURE 1;#define FALSE 0;#define MAXSIZE 100;typedef structfloat coef;int expn;term,elemtype;typedef struct LNodeelemtype data;struct LNode *next;List,*LinkList;typedef LinkList polynomail;int Initlist(LinkList *p)*p=(LinkList)malloc(size
2、of(List);(*p)-next=NULL;return OK;int cmp(term a,term b)if(a.expnnext;if(*q)=NULL)*q=*p;return ERROR;while(*q)!=NULL)if(cmp(e,(*q)-data)=0) break;else *q=(*q)-next;if(*q)!=NULL) return TURE;if(*q)=NULL) return FALSE;int MakeNode(LinkList *s,elemtype e)if(!(*s) return OVERFLOW;(*s)-data=e;(*s)-next=N
3、ULL;return OK;void InsFirst(LinkList *q,LinkList *s)(*s)-next=(*q)-next;(*q)-next=*s;int DelFirst(LinkList *q,LinkList *s)LinkList p;p=*s;(*q)-next=p-next;return OK;void FreeNode(LinkList *p)LinkList q;q=*p;free(q);LinkList NextPos(LinkList *p,LinkList *q)return (*q)-next;void SetCurElem(polynomail
4、*p,float m)(*p)-data).coef=m;int ListEmpty(LinkList p)if(p-next=NULL) return TURE;if(p-next!=NULL) return FALSE;void Append(LinkList *p,LinkList *s)LinkList q;q=*p;while(q-next!=NULL) q=q-next;q-next=*s;void SortPolyn(polynomail *p)polynomail q,s,t,m,n,x,y,x1,x2; q=*p;Initlist(&m);m-data.coef=0.0;m-
5、data.expn=-1;n=m;s=q;y=s-next;t=y-next;x=q-next;x1=s;x2=t;while(x2!=NULL)while(t!=NULL)if(cmp(x-data,y-data)next;y=y-next;t=t-next;else x=y;x1=s;x2=t;if(cmp(x-data,y-data)0)x=y;x1=s;x2=t;x1-next=x2;n-next=x;x-next=NULL;n=n-next;x1=q;x=q-next;x2=x-next;s=x1;y=x;t=x2;n-next=x;x-next=NULL;q-next=NULL;f
6、ree(q);*p=m;void CreatePolyn(polynomail *p,int m)polynomail h,q100,s100,x;int i;elemtype e;elemtype t100;h=*p;e.coef=0.0;e.expn=-1;h-data=e;h-next=NULL;q0=h;Initlist(&x);for(i=0;inext;if(q-data).coef0.0&(q-data).expn!=0) printf(%.4f*x(%d),(q-data).coef,(q-data).expn);else if(q-data).expn=0) printf(%
7、.4f,(q-data).coef);else printf(%.4f*x(%d),(q-data).coef,(q-data).expn);q=q-next;while(q!=NULL)if(q-data).coef0.0&(q-data).expn!=0) printf(+%.4f*x(%d),(q-data).coef,(q-data).expn);else if(q-data).expn=0&(q-data).coef0.0) printf(+%.4f,(q-data).coef);else if(q-data).expn=0&(q-data).coefdata).coef);else
8、 printf(%.4f*x(%d),(q-data).coef,(q-data).expn);q=q-next;printf(n);void AddPolyn(polynomail *pa,polynomail *pb)polynomail ha,hb,qa,qb;ha=*pa;hb=*pb;qa=NextPos(pa,&ha);qb=NextPos(pb,&hb);elemtype a,b;float sum;while(qa&qb)a=qa-data;b=qb-data;switch(cmp(a,b)case -1:ha=qa;qa=NextPos(pa,&qa);break;case
9、0:sum=a.coef+b.coef;if(sum!=0.0)SetCurElem(&qa,sum);ha=qa;else DelFirst(&ha,&qa);FreeNode(&qa);DelFirst(&hb,&qb);FreeNode(&qb);qb=NextPos(pb,&hb);qa=NextPos(pa,&ha);break;case 1:DelFirst(&hb,&qb);InsFirst(&ha,&qb);qb=NextPos(pb,&hb);ha=NextPos(pa,&ha);break;if(!ListEmpty(*pb) Append(pa,&qb);FreeNode
10、(&hb);void SubStractPolyn(polynomail *pa,polynomail *pb)polynomail ha,hb,qa,qb;ha=*pa;hb=*pb;qa=NextPos(pa,&ha);qb=NextPos(pb,&hb);elemtype a,b;float sum;while(qb!=NULL)qb-data.coef=-qb-data.coef;qb=qb-next;qb=NextPos(pb,&hb);while(qa&qb)a=qa-data;b=qb-data;switch(cmp(a,b)case -1:ha=qa;qa=NextPos(pa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一元 多项式 运算 语言版
限制150内