您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 多项式加减乘除法
  所属分类: 综合布线
  开发工具:
  文件大小: 4kb
  下载次数: 0
  上传时间: 2012-04-17
  提 供 者: a1542******
 详细说明: #include #include #include #include using namespace std; #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef struct { float coef; int expn; } term,ElemType; typedef struct polynomail { ElemType term; struct polynomail *next; }polynomail, *linklist; Status locatelem(linklist l,ElemType e,linklist &q) { linklist p,m; p=l->next; if(!p) { q=l; return FALSE; } if((p->term).expn>e.expn) {q=l;return FALSE;} else if(p->next) { while(p->next) { m=p->next; if((p->term).expn>e.expn) { q=l; return FALSE; } else if((m->term).expn>e.expn) { q=p;return FALSE;} else p=m; } q=p;return FALSE; } else{ q=p;return FALSE;} } void makenode(linklist &s,ElemType e) { s=(linklist)malloc(sizeof(polynomail)); s->term=e; } void creatpolyn(linklist &p,int m) { linklist h,q,s; ElemType e; p=(linklist)malloc(sizeof(polynomail)); p->next=NULL; for(int i=0;inext=q->next; q->next=s; } } } void destroypolyn(linklist &p) { linklist q; while(p) { q=p->next; free(p); p=q; } } void printpolyn(linklist p) { linklist q; q=p->next; while(q) { printf("+%fX^",((q->term).coef)); printf("%d",((q->term).expn)); q=q->next; } printf("\n"); } int polynlength(linklist p) { linklist q; q=p->next; int i=0; while(q) { i++; q=q->next; } return i; } void add(linklist &pa;,linklist pb) { float sum; linklist qa,qb,qc; qa=pa->next; qb=pb->next; qc=pa; while(qa&&qb;) { if(qa->term.expn>qb->term.expn) { qc->next=qb;qc=qb;qb=qb->next; } else if(qa->term.expnterm.expn) { qc->next=qa;qc=qa;qa=qa->next; } else { sum=qa->term.coef+qb->term.coef; if(sum) { qa->term.coef=sum; qc->next=qa;qc=qa; qa=qa->next; qb=qb->next; } else { qa=qa->next; qb=qb->next; } } } qc->next=qa?qa:qb; free(pb); } void sub(linklist pa,linklist pb) { float sum; linklist qa,qb,qc; qa=pa->next; qb=pb->next; qc=pa; while(qa&&qb;) { if(qa->term.expn>qb->term.expn) { qc->next=qb;qc=qb;qb=qb->next; } else if(qa->term.expnterm.expn) { qc->next=qa;qc=qa;qa=qa->next; } else { sum=qa->term.coef-qb->term.coef; if(sum) { qa->term.coef=sum; qc->next=qa;qc=qa; qa=qa->next; qb=qb->next; } else { qa=qa->next; qb=qb->next; } } } qc->next=qa?qa:qb; free(pb); } void mul(linklist pa,linklist pb,linklist &ps;) { linklist qa,qb,pc,qc,qd,qf; qa=pa->next; qf=qb=pb->next; ps=(linklist)malloc(sizeof(polynomail));ps->next=NULL; pc=(linklist)malloc(sizeof(polynomail));pc->next=NULL;qc=pc; for(qa;qa!=NULL;qa=qa->next) { pc=(linklist)malloc(sizeof(polynomail));pc->next=NULL;qc=pc; qb=qf; for(qb;qb!=NULL;qb=qb->next) { qd=(linklist)malloc(sizeof(polynomail)); qd->next=NULL; qd->term.coef=qb->term.coef*qa->term.coef; qd->term.expn=qb->term.expn+qa->term.expn; qc->next=qd;qc=qc->next; } add(ps,pc); } } void main() { int n; linklist a,b,c,d,f,g,h,i,j,k,o,z; int m,l; printf("输入多项式的个数 "); scanf("%d",&m); creatpolyn( a,m); d=a; printf("得到多项式\n"); printpolyn(d); printf("输入多项式的个数 "); scanf("%d",&l); creatpolyn( b,l); f=b; printf("得到多项式\n"); printpolyn(d); printf("两项式的和\n"); g=a;h=b; add(g,h); printpolyn(g); printf("两项式的差\n"); i=a;j=b; sub(i,j); printpolyn(i); printf("两项式的积\n"); k=a;o=b; mul(k,o,z); printpolyn(z); scanf("%d",&n); } ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: 链表
 输入关键字,在本站1000多万海量源码库中尽情搜索: