多项式c语言编程

上传人:人*** 文档编号:486793284 上传时间:2024-01-16 格式:DOCX 页数:5 大小:12.67KB
返回 下载 相关 举报
多项式c语言编程_第1页
第1页 / 共5页
多项式c语言编程_第2页
第2页 / 共5页
多项式c语言编程_第3页
第3页 / 共5页
多项式c语言编程_第4页
第4页 / 共5页
多项式c语言编程_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《多项式c语言编程》由会员分享,可在线阅读,更多相关《多项式c语言编程(5页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! #include stdlib.h#include stdio.htypedef struct nodedouble coef; /系数int exp; /指数struct node *next;Polynode,*Polynomial; void error(char *s)fprintf(stderr,%sn,s);exit(1);Polynode* createNode(double coef,int exp)/ 为结点分配空间Polynode *p=(Polynode*)malloc(sizeof(Polynode);if(!p)erro

2、r(分配失败);p-coef=coef;p-exp=exp;p-next=NULL; return p;void insertNode(Polynomial p,Polynode *newnode)Polynode *q=p;/找到链表的末尾,循环结束时,p指向最后一个结点while(q-next!=NULL)q=q-next;q-next=newnode; Polynomial createPolynomial(int m)double coef;int exp,i=1;Polynode *newnode;Polynomial p;/ 创建头结点newnode=createNode(0,0)

3、;/ p指向头结点p=newnode;/ 依次创建多项式各项对应的结点while(inext)q=q-next;/ 复制currentnode指向的每一个结点,链入p的末尾while(currentnode)newnode=createNode(currentnode-coef,currentnode-exp);q-next=newnode;q=q-next;currentnode=currentnode-next;void outputPolynomial(Polynomial p)Polynode *currentnode;currentnode=p-next;if(!currentnod

4、e)error(Polynomial is null);/ 输出第一项printf(%lfx%d,currentnode-coef,currentnode-exp);currentnode=currentnode-next;while(currentnode)if(currentnode-coef0)printf(+);printf(%lfx%d,currentnode-coef,currentnode-exp);currentnode=currentnode-next; printf(n);void freePolynomial(Polynomial p)Polynode *q; while

5、(p) q=p;p=p-next;free(q); Polynomial addPolynomial(Polynomial pa,Polynomial pb)Polynomial pc;Polynode *currenta,*currentb,*newnode;double coef;currenta=pa-next;currentb=pb-next;newnode=createNode(0,0);/ 创建链表pc的头结点pc=newnode;/pc指向头结点while(currenta¤tb) if(currenta-expcurrentb-exp) newnode=create

6、Node(currentb-coef,currentb-exp);insertNode(pc,newnode);currentb=currentb-next;else if(currenta-expexp)newnode=createNode(currenta-coef,currenta-exp);insertNode(pc,newnode);currenta=currenta-next;else / 代表currenta-exp=currentb-exp coef=currenta-coef+currentb-coef;if(coef!=0) newnode=createNode(coef,

7、currenta-exp);insertNode(pc,newnode); currenta=currenta-next;currentb=currentb-next; / 将pa中剩余的节点加入pc中if(currenta)append(pc,currenta);/ 将pb中剩余的节点加入pc中if(currentb)append(pc,currentb);return pc;void derivate(Polynomial p)Polynode *currentnode=p-next;while(currentnode)currentnode-coef=currentnode-coef*c

8、urrentnode-exp;currentnode-exp=currentnode-exp-1;currentnode=currentnode-next;void showMenu()printf(-n);printf( 1.求和n);printf( 2.求导n);printf( 3.退出n);printf(-n);printf(请输入要进行的操作1或2或3:); void main() Polynomial pa,pb,pc;int choice,num;while(true)showMenu();scanf(%d,&choice);printf(n); switch(choice) /

9、求和case 1:printf(请输入多项式1的项数:);scanf(%d,&num);printf(按照指数从小到大的次序,输入多项式1的系数和指数n);pa=createPolynomial(num); printf(请输入多项式2的项数:);scanf(%d,&num);printf(按照指数从小到大的次序,输入多项式2的系数和指数n);pb=createPolynomial(num);pc=addPolynomial(pa,pb);printf(多项式1:);outputPolynomial(pa);printf(多项式2:);outputPolynomial(pb);printf(求

10、和的结果:);outputPolynomial(pc);/ 释放空间freePolynomial(pa);freePolynomial(pb);freePolynomial(pc);break;/ 求导case 2:printf(请输入多项式的项数:); scanf(%d,&num);printf(按照指数从小到大的次序,输入多项式的系数和指数n);pc=createPolynomial(num); printf(输入的多项式:); outputPolynomial(pc); derivate(pc); printf(求导的结果:); outputPolynomial(pc);freePolynomial(pc); break; / 退出case 3: exit(0);/ 错误的输入default:printf(输入错误n);exit(0); /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号