一元多项式数据结构课设(一元多项式数据结构)

导读 #include#include#includetypedef struct polynode { int coef; //多项式的系数 int exp; //指数 ...

#include#include#includetypedef struct polynode { int coef; //多项式的系数 int exp; //指数 struct polynode *next; }node;node *create() //用尾插法建立一元多项式的链表{ node *h,*r,*s; int c,e; h=(node*)malloc(sizeof(node)); r=h; printf("coef:"); scanf("%d",&c); printf("exp: "); scanf("%d",&e); while(c!=0) //输入系数为0时,多项式的输入结束 { s=(node*)malloc(sizeof(node)); s->coef=c; s->exp=e; r->next=s; r=s; printf("coef:"); scanf("%d",&c); printf("exp: "); scanf("%d",&e); } r->next=NULL; return(h);}void print(node *p) //输出函数,打印出一元多项式{ while(p->next!=NULL) { p=p->next; printf(" %d*x^%d",p->coef,p->exp); }} void polyadd(node *ha, node *hb)//一元多项式相加函数。

用于将两个多项式相加,然后将和多项式存放在多项式ha中,并将多项式hb删除{ node *p,*q,*pre,*temp; int sum; p=ha->next; q=hb->next; pre=ha; while(p!=NULL&&q!=NULL) { if(p->expexp) { pre->next=p; pre=pre->next; p=p->next; } else if(p->exp==q->exp) { sum=p->coef+q->coef; if(sum!=0) { p->coef=sum; pre->next=p;pre=pre->next;p=p->next; temp=q;q=q->next;free(temp); } else //如果系数和为零。

则删除结点p与q,并将指针指向下一个结点 { temp=p->next;free(p);p=temp; temp=q->next;free(q);q=temp; } } else { pre->next=q; pre=pre->next; q=q->next; } } if(p!=NULL) //将多项式A中剩余的结点加入到和多项式中 pre->next=p; else pre->next=q; } void multipoly(node *ha,node *hb) { node *p,*q,*n,*m; p=ha->next; n=(node*)malloc(sizeof(node)); n->next=NULL; while(p!=NULL) { m=(node*)malloc(sizeof(node)); for(q=hb->next;q;q=q->next) { m->coef=p->coef*q->coef; m->exp=p->exp+q->exp; m->next=NULL; } p=p->next; polyadd(n,m); } printf("多项式的积是:"); print(n);}void main() { node *ha,*hb; printf("请输入多项式ha的系数与指数:"); ha=create(); print(ha); printf(""); printf("请输入多项式hb的系数与指数:"); hb=create(); print(hb); printf(""); printf("多项式的和是:"); polyadd(ha,hb); print(ha); printf(""); multipoly(ha,hb);}。

免责声明:本文由用户上传,如有侵权请联系删除!