收藏 分销(赏)

c语言实现两多项式相乘,并排序,合并同类项.doc

上传人:s4****5z 文档编号:8820320 上传时间:2025-03-03 格式:DOC 页数:5 大小:71.50KB
下载 相关 举报
c语言实现两多项式相乘,并排序,合并同类项.doc_第1页
第1页 / 共5页
c语言实现两多项式相乘,并排序,合并同类项.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述
#include<stdio.h> typedef struct Node { int coef;//系数 int exp;//指数 struct Node *next; }PolyNode; PolyNode *Creatpoly()//创建多项式的单链表 { PolyNode *h,*p,*q; h=(PolyNode *)malloc(sizeof(PolyNode)); p=h; p->next=NULL; printf("请输入多项式的系数及其指数a,b,当系数输入0时停止输入\n"); q=(PolyNode *)malloc(sizeof(PolyNode)); scanf("%d,%d",&q->coef,&q->exp); while(q->coef!=0) { p->next=q; p=q; q=(PolyNode *)malloc(sizeof(PolyNode)); scanf("%d,%d",&q->coef,&q->exp); } p->next=NULL; return(h); } void Prin_poly(PolyNode *h)//将多项式输出函数 { PolyNode *p; p=h->next; while(p!=NULL) { if(p->coef>0&&p!=h->next) { if(p->exp>0) printf("+%dx^%d",p->coef,p->exp); else if(p->exp<0) printf("+%dx^(%d)",p->coef,p->exp); else printf("+%d",p->coef); } else if(p->coef<0&&p!=h->next) { if(p->exp>0) printf("%dx^%d",p->coef,p->exp); else if(p->exp<0) printf("%dx^(%d)",p->coef,p->exp); else printf("%d",p->coef); } else { if(p->exp>0) printf("%dx^%d",p->coef,p->exp); else if(p->exp<0) printf("%dx^(%d)",p->coef,p->exp); else printf("%d",p->coef); } p=p->next; } } void Insort(PolyNode *h)//排序函数,使多项式中的各项按X的升幂排列 { PolyNode *s,*p; int t,m; for(p=h->next;p!=NULL;p=p->next)//类似于冒泡排序 { for(s=h->next;s->next!=NULL;s=s->next) { if(s->exp>s->next->exp) { t=s->exp; m=s->coef; s->coef=s->next->coef; s->exp=s->next->exp; s->next->coef=m; s->next->exp=t; } } } } void UnitePoly(PolyNode *h)//合并同类项 { PolyNode *p1,*p2,*q1,*q2,*temp; q1=h; p1=q1->next; while(p1!=NULL) { p2=p1->next; q2=p1; while(p2!=NULL) { if(p1->exp==p2->exp) { p1->coef=p1->coef+p2->coef; if(p1->coef==0) { temp=p2; q2->next=p2->next; free(temp); temp=p1; q1->next=p1->next; p1=q1; free(temp); break; } else { temp=p2; q2->next=p2->next; p2=p2->next; free(temp); } } else { q2=p2; p2=p2->next; } } q1=p1; p1=p1->next; } } PolyNode *polymuti(PolyNode *h1,PolyNode *h2)//多项式相乘 { PolyNode *h,*p,*p1,*p2,*q; p1=h1->next; h=p=(PolyNode *)malloc(sizeof(PolyNode)); p->next=NULL; while(p1) { p2=h2->next; while(p2) { q=(PolyNode *)malloc(sizeof(PolyNode)); q->coef=p1->coef*p2->coef; q->exp=p1->exp+p2->exp; p->next=q; p=q; p2=p2->next; } p1=p1->next; } p->next=NULL; return(h); } main() { PolyNode *h1,*h2,*h; h1=Creatpoly(); printf("该多项式为P1(x)="); UnitePoly(h1); Insort(h1); Prin_poly(h1); printf("\n"); h2=Creatpoly(); printf("该多项式为P2(x)="); UnitePoly(h2); Insort(h2); Prin_poly(h2); printf("\n"); printf("按任意键查看两多项式相乘结果\n"); getch(); printf("相乘后的多项式为P(x)="); h=polymuti(h1,h2); UnitePoly(h); Insort(h); Prin_poly(h); printf("\n"); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 初中数学

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服