一元多项式的相加减(共13页).doc
《一元多项式的相加减(共13页).doc》由会员分享,可在线阅读,更多相关《一元多项式的相加减(共13页).doc(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上实验一 一元多项式的表示和相减、相乘一、实验目的1. 掌握链表的存储方式2. 掌握一元多项式的存储及运算。二、实验内容已知一元多项式P(x)和Q(x)已存在,求P(x)-Q(x)和P(x)* Q(x)并输出。要求:1.通过键盘随机输入两多项式P(x)和Q(x)的内容。2.输出结果要有P(x)和Q(x)的以及它们的差P(x)-Q(x)和乘积P(x)* Q(x)。三、实验步骤:1. 创建一元多项P(x)和Q(x)。2. 求P(x)-Q(x),P(x)* Q(x)。3. 输出P(x)、Q(x)、P(x)-Q(x),P(x)* Q(x)。四、算法说明 首先,定义一元多项式的存
2、储方式,然后从键盘输入P(x)和Q(x)对应多项式的各对系数和指数,建立相应的一元多项式5、 测试结果参考下图多项式相减多项式相乘 六、源代码1.多项式的相减# include<stdio.h> # include<malloc.h> typedef struct float coef; /系数 int expn; /指数 ElemType; typedef struct LNode /结点类型 ElemType data; struct LNode *next; *LinkList; void MakeNode(LinkList &s,ElemType e)
3、/生成结点 s=(LinkList)malloc(sizeof(LNode); s->data=e; void InsAfter(LinkList p,LinkList s) /插入结点 s->next=p->next;p->next=s; int compare(ElemType e1,ElemType e2) /比较 if(e1.expn>e2.expn) return 1; else if(e1.expn<e2.expn) return -1; return 0; void OrderInsert(LinkList &L,ElemType e,
4、int(*compare)(ElemType,ElemType) /有序插入 LinkList p=L,q=p->next,s; while(q) int n=compare(e,q->data); if(n<0) MakeNode(s,e); InsAfter(p,s);break; else if(n=0) q->data.coef=q->data.coef+e.coef; if(q->data.coef=0)p->next=q->next;free(q); break; p=p->next;q=p->next; if(q=NUL
5、L) MakeNode(s,e); InsAfter(p,s); /最大,放在最后一个位置 void InitList(LinkList &L) /初始化 L=(LinkList)malloc(sizeof(LNode); L->next=NULL; void SetCurElem(LinkList &p,ElemType e) /设置结点 p->data.coef=e.coef; p->data.expn=e.expn; void CreatePolyn(LinkList &L,int m) InitList(L);ElemType e;e.coef
6、=0.0;e.expn=-1; SetCurElem(L,e);/设置头结点的数据元素 printf("请输入%d对多项式的值:n",m); for(int i=1;i<=m;i+) scanf("%f%d",&e.coef,&e.expn); /输入值 OrderInsert(L,e,compare); void show(LinkList L) /输出方法 LinkList p=L->next; if(p) /第一个输出 printf("%.2fX%d",p->data.coef,p->da
7、ta.expn); p=p->next; while(p) if(p->data.coef>0) printf("+"); printf("%.2fX%d",p->data.coef,p->data.expn); p=p->next; printf("n"); void ListDestroy(LinkList &L) /销毁 LinkList p=L,q; while(p) q=p; p=p->next; free(q); void subtract(LinkList L1,Link
8、List L2,LinkList &L3) /多项式相减 ElemType e; InitList(L3);e.coef=0.0;e.expn=-1; SetCurElem(L3,e);/设置头结点的数据元素 LinkList p1=L1->next,p2=L2->next,q;/r1始终指向新建链表的尾部,p1和p2表示当前结点 while(p2) p2->data.coef=-p2->data.coef; p2=p2->next; p2=L2->next; while(p1&&p2) int n=compare(p1->da
9、ta,p2->data); switch(n) case -1:OrderInsert(L3,p1->data,compare);p1=p1->next;break; /L1中的值小,插入之 case 1:OrderInsert(L3,p2->data,compare);p2=p2->next;break; /L2中的值小,插入之 case 0: /相同 e.coef=p1->data.coef+p2->data.coef;e.expn=p1->data.expn; if(e.coef!=0)OrderInsert(L3,e,compare);
10、p1=p1->next;p2=p2->next; break; if(p1) OrderInsert(L3,p1->data,compare);p1=p1->next; /添加L1 else if(p2) OrderInsert(L3,p2->data,compare);p2=p2->next; /添加L2 LinkList FindThan( LinkList X, LinkList L ) LinkList Tmp; Tmp = L; while( Tmp->next != NULL && Tmp->next->data
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一元 多项式 相加 13
限制150内