欢迎来到天天文库
浏览记录
ID:56204925
大小:48.50 KB
页数:7页
时间:2020-06-21
《一元稀疏多项式计算器(数据结构.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、【问题描述】 设计一个一元稀疏多项式简单计算器 【基本要求】 一元多项式简单计算器的基本功能是: 1,输入并建立多项式; 2,输出多项式,输出形式为整数序列:n,c1,e1,c2,c2,...,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列; 3,多项式a和b相加,建立多项式a+b; 4,多项式a和b相减,建立多项式a-b. 【测试数据】 1,(2x+5x^8-3.1x^11)+(7-5x^8+11x^9)=(-3.1x^11+11x^9+2x+7) 【实现提示】 用带表头结点的单链表存储多项式。
2、 #include#includetypedefstructnode{floatcoef;intexpn;structnode*next;}Lnode,*polynmial;voidcreate(polynmial&L); //输入并建立多项式Lvoiddisplay(polynmialL); //显示,输出多项式Lvoidsort(polynmial&L); //多项式L按指数排序voidreverse(polynmial&L); //逆置voidselect(); //用户选择加减
3、操作voidadd(polynmialLa,polynmialLb,polynmial&Lc); //多项式La,Lb相加voidsubtract(polynmialLa,polynmialLb,polynmial&Ld);//多项式La减去Lb,结果给Ldvoidcreate(polynmial&L)//输入并建立多项式L{inti,n;staticstructnode*p;scanf("%d",&n);L=(structnode*)malloc(sizeof(structnode));L->next=NULL;for(i=0;i4、;i++){ p=(structnode*)malloc(sizeof(structnode)); scanf("%f%d",&p->coef,&p->expn); p->next=L->next; L->next=p;}}voiddisplay(polynmialL)//显示,输出多项式L{structnode*p,*q;intflag=0;intk=0;q=L->next;while(q){ if(q->coef!=0) k++; q=q->next;}printf("%d,",k);p=L->next;if(p->c5、oef!=0){ printf("%.1f,%d,",p->coef,p->expn); flag++;}for(p=p->next;p;p=p->next){ if(p->coef!=0) { printf("%.1f,%d,",p->coef,p->expn); flag++; }}if(flag==0) printf("%d",flag);else printf("");}voidsort(polynmial&L)//多项式L按指数排序{polynmialp,q,r,u;p=L->next;L->nex6、t=NULL;while(p!=NULL){ r=L; q=L->next; while((q!=NULL)&&(q->expn<=p->expn)) { r=q; q=q->next; } u=p->next; r->next=p; p->next=q; p=u;}}voidreverse(polynmial&L)//逆置{polynmialH;staticstructnode*p,*q,*s;H=(structnode*)malloc(sizeof(structnode));H->next=NULL;p=(s7、tructnode*)malloc(sizeof(structnode));s=L->next;p->coef=s->coef;p->expn=s->expn;p->next=s->next;while(s){ p->coef=s->coef; p->expn=s->expn; p->next=s->next; q=H->next; H->next=p; p->next=q; p=(structnode*)malloc(sizeof(structnode)); s=s->next;}p=H->next;q=L->next;8、while(p){ q->coef=p->coef; q->expn=p->expn; q=q->next; p=p->next;}}voidselect()//用户选择加减操作{pr
4、;i++){ p=(structnode*)malloc(sizeof(structnode)); scanf("%f%d",&p->coef,&p->expn); p->next=L->next; L->next=p;}}voiddisplay(polynmialL)//显示,输出多项式L{structnode*p,*q;intflag=0;intk=0;q=L->next;while(q){ if(q->coef!=0) k++; q=q->next;}printf("%d,",k);p=L->next;if(p->c
5、oef!=0){ printf("%.1f,%d,",p->coef,p->expn); flag++;}for(p=p->next;p;p=p->next){ if(p->coef!=0) { printf("%.1f,%d,",p->coef,p->expn); flag++; }}if(flag==0) printf("%d",flag);else printf("");}voidsort(polynmial&L)//多项式L按指数排序{polynmialp,q,r,u;p=L->next;L->nex
6、t=NULL;while(p!=NULL){ r=L; q=L->next; while((q!=NULL)&&(q->expn<=p->expn)) { r=q; q=q->next; } u=p->next; r->next=p; p->next=q; p=u;}}voidreverse(polynmial&L)//逆置{polynmialH;staticstructnode*p,*q,*s;H=(structnode*)malloc(sizeof(structnode));H->next=NULL;p=(s
7、tructnode*)malloc(sizeof(structnode));s=L->next;p->coef=s->coef;p->expn=s->expn;p->next=s->next;while(s){ p->coef=s->coef; p->expn=s->expn; p->next=s->next; q=H->next; H->next=p; p->next=q; p=(structnode*)malloc(sizeof(structnode)); s=s->next;}p=H->next;q=L->next;
8、while(p){ q->coef=p->coef; q->expn=p->expn; q=q->next; p=p->next;}}voidselect()//用户选择加减操作{pr
此文档下载收益归作者所有