读入合法字符_第1页
读入合法字符_第2页
读入合法字符_第3页
读入合法字符_第4页
读入合法字符_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include <stdio.h>#include <stdlib.h>#define OK 1;#define READ(I) while (I)=getchar()='n'); /读入合法字符typedef int status;typedef struct PolyNode float coef; int expn; struct PolyNode *next;Poly,*P_Poly;status CreatPoly(P_Poly*,int); /创建多项式链表void OutP_Poly(P_Poly); /输出多项式void AddPoly

2、(P_Poly*,P_Poly,P_Poly); /求和void DecPoly(P_Poly*,P_Poly,P_Poly); /求差void DelPoly(P_Poly*); /删除并释放多项式status main() P_Poly PolyHead26=0; char menu,name; for (;) printf ("1.建立多项式n"); printf ("2.输出多项式n"); printf ("3.求两个多项式之和(必须先创建),建立和式并输出n"); printf ("4.求两个多项式之差(必须先创建

3、),建立差式并输出n"); printf ("5.删除多项式n"); printf ("6.退出n"); printf ("请选择指令:"); READ(menu) switch (menu) case '1': int n; printf ("请输入要创建的多项式的名称(单个小写字母表示):"); READ(name) if (NULL!=PolyHeadname-'a') printf ("此多项式已经存在!n"); break; printf (&

4、quot;请输入项数:"); scanf ("%d",&n); if(CreatPoly(&PolyHeadname-'a',n) printf ("多项式%c创建完毕!n",name); break; case '2': printf ("请输入要输出的多项式的名称:"); READ(name) if (NULL=PolyHeadname-'a') printf ("此多项式不存在!n"); break; OutP_Poly(PolyHea

5、dname-'a'); break; case '3': char name1,name2; printf ("请输入加式一的名称:"); READ(name1) if (NULL=PolyHeadname1-'a') printf ("此多项式不存在!请先创建n"); break; printf ("请输入加式二的名称:"); READ(name2) if (NULL=PolyHeadname2-'a') printf ("此多项式不存在!请先创建n"

6、;); break; printf ("请输入要创建的和式的名称:"); READ(name) if (NULL!=PolyHeadname-'a') printf ("此多项式已经存在!n"); break; AddPoly(&PolyHeadname-'a',PolyHeadname1-'a',PolyHeadname2-'a'); OutP_Poly(PolyHeadname-'a'); break; case '4': char name1,n

7、ame2; printf ("请输入被减式的名称:"); READ(name1) if (NULL=PolyHeadname1-'a') printf ("此多项式不存在!请先创建n"); break; printf ("请输入减式的名称:"); READ(name2) if (NULL=PolyHeadname2-'a') printf ("此多项式不存在!请先创建n"); break; printf ("请输入要创建的差式的名称:"); READ(name)

8、if (NULL!=PolyHeadname-'a') printf ("此多项式已经存在!n"); break; DecPoly(&PolyHeadname-'a',PolyHeadname1-'a',PolyHeadname2-'a'); OutP_Poly(PolyHeadname-'a'); break; case '5': printf ("请输入要删除的多项式名称:"); READ(name) if (NULL=PolyHeadname-&

9、#39;a') printf ("此多项式不存在!n"); break; DelPoly(&PolyHeadname-'a'); printf ("多项式%c已删除!n",name); break; case '6': return OK; status CreatPoly(P_Poly* P_PolyHead,int n) /为确保其他子函数正常运行,入口参数要求不含同类项、指数递减 int i=0; P_Poly p,tail; *P_PolyHead=(Poly*)malloc(sizeof(Poly

10、); (*P_PolyHead)->expn=n; tail=*P_PolyHead; printf ("请按照指数递减序输入最简形式的多项式n"); for (;i<n;i+) p=(Poly*)malloc(sizeof(Poly); printf ("请输入第%d项的系数和指数(系数,指数):",i+1); scanf ("%f,%d",&(p->coef),&(p->expn); tail->next=p; tail=p; tail->next=NULL; return OK

11、;void OutP_Poly(P_Poly PolyHead) int i=0; P_Poly p; printf ("%d ",PolyHead->expn); p=PolyHead->next; for (;i<PolyHead->expn;i+) printf ("%f,%d ",p->coef,p->expn); p=p->next; printf ("n");void AddPoly(P_Poly* P_PolyHead,P_Poly PolyHead1,P_Poly PolyHe

12、ad2) int i=0; P_Poly p1,p2,p,tail; p1=PolyHead1->next; p2=PolyHead2->next; *P_PolyHead=(P_Poly)malloc(sizeof(Poly); p=tail=*P_PolyHead; while(p1&&p2) int e1,e2; e1=p1->expn; e2=p2->expn; if (e1>e2) p=(P_Poly)malloc(sizeof(Poly); tail->next=p; tail=p; *p=*p1; p1=p1->next;

13、 i+; else if(e1=e2) float sum_c=p1->coef+p2->coef; if (sum_c!=0.0) p=(P_Poly)malloc(sizeof(Poly); tail->next=p; tail=p; p->coef=sum_c; p->expn=e1; i+; p1=p1->next; p2=p2->next; else if (e1<e2) p=(P_Poly)malloc(sizeof(Poly); tail->next=p; tail=p; *p=*p2; p2=p2->next; i+;

14、 while (p1) p=(Poly*)malloc(sizeof(Poly); *p=*p1; tail->next=p; tail=p; p1=p1->next; i+; while (p2) p=(Poly*)malloc(sizeof(Poly); *p=*p2; tail->next=p; tail=p; p2=p2->next; i+; (*P_PolyHead)->expn=i; tail->next=NULL;void DecPoly(P_Poly* P_PolyHead,P_Poly PolyHead1,P_Poly PolyHead2)

15、 int i=0; P_Poly p1,p2,p,tail; p1=PolyHead1->next; p2=PolyHead2->next; *P_PolyHead=(P_Poly)malloc(sizeof(Poly); p=tail=*P_PolyHead; while(p1&&p2) int e1,e2; e1=p1->expn; e2=p2->expn; if (e1>e2) p=(P_Poly)malloc(sizeof(Poly); tail->next=p; tail=p; *p=*p1; p1=p1->next; i+;

16、 else if(e1=e2) float dif_c=p1->coef-p2->coef; if (dif_c!=0.0) p=(P_Poly)malloc(sizeof(Poly); tail->next=p; tail=p; p->coef=dif_c; p->expn=e1; i+; p1=p1->next; p2=p2->next; else if (e1<e2) p=(P_Poly)malloc(sizeof(Poly); tail->next=p; tail=p; p->coef=-p2->coef; p->expn=p2->expn; p2=p2->next; i+; while (p1) p=(Poly*)malloc(sizeof(Poly); *p=*p1; tail->next=p; tail=p; p1=p1->next; i+; while (p2) p=(Poly*)m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论