文档详情

数据结构多项式表示与相加-实验报告.doc

发布:2020-03-31约1.99千字共4页下载文档
文本预览下载声明
实验报告 姓名:张雅展 学号:p实验名称:一元多项式的表示与相加 实验目的:明确链表的生成与插入删除及输出。 源代码如下: #includestdio.h #includemalloc.h typedef struct Elem{ //定义元素结构体类型 float ceof; int expn; }Elem; typedef struct PNode{ //定义节点结构体类型 Elem data; struct PNode *next; }PN; PN *Creatpoly() //生成多项式函数 { PN *p,*q,*h; int m,i; if(!(p=h=(PN*)malloc(sizeof(PN)))) //申请头节点,不成功输出ERROR printf(ERROR\n); printf(请输入多项数的项数:\n); scanf(%d,m); printf(请输入各项系数及指数(指数为升序):\n); for(i=1;i=m;i++) //开始生成多项式链表 { q=p; p=(PN*)malloc(sizeof(PN)); q-next=p; scanf(%f,%d,(p-data.ceof),(p-data.expn)); p-next=NULL; } printf(\n); printf(多项式已生成,多项式为:\n); p=h-next; while(p){ //输出多项式 printf(+%7.2fX^%d,p-data.ceof,p-data.expn); p=p-next; } return(h); //返回头结点 } int comp(int a,int b){ //比较值函数 if(ab)return 1; if(ab)return -1; else return 0; } void AddPoly(PN *ha,PN *hb) //多项式相加函数 { PN *pa,*pb,*qa,*qb; float sum; int a,b; pa=ha-next; pb=hb-next; qa=ha; qb=hb; while(papb){ a=pa-data.expn; b=pb-data.expn; switch(comp(a,b)){ case -1: pa=pa-next; qa=qa-next; break; case 0:sum=pa-data.ceof+pb-data.ceof; if(sum!=0.0){ pa-data.ceof=sum; pa=pa-next; qa=qa-next; pb=pb-next; free(qb-next); qb-next=pb; } else{ pa=pa-next; pb=pb-next; free(qa-next); qa-next=pa; free(qb-next); qb-next=pb; } break; case 1: qb-next=pb-next; qa-next=pb; pb-next=pa; pb=qb-next; break; } } if(pb)pa-next=pb; free(hb); printf(相加后的多项式为:\n); pa=ha-next; while(pa){ //输出相加后的多项式 printf(+%fX^%d,pa-data.ceof,pa-data.expn); pa=pa-next; } } void main() { PN *ha,*hb; printf(\n); ha=Creatpoly(); printf(\n); hb=Creatpoly(); printf(\n); printf(%x\n%x,ha,hb); AddPoly(ha,hb); } 运行状况如图:
显示全部
相似文档