日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多项式相乘与相加演示

發(fā)布時(shí)間:2023/12/19 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多项式相乘与相加演示 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#include<stdio.h> #include<stdlib.h> typedef struct node {int p;int e;struct node *next; }Polynomial,*P_Polynomial; P_Polynomial Input() {//輸入多項(xiàng)式P_Polynomial p1,p2,head;head=p2=(P_Polynomial)malloc(sizeof(Polynomial));p1=(P_Polynomial)malloc(sizeof(Polynomial));printf("\n請輸入多項(xiàng)式的系數(shù)和冪值\n(注:以冪值為0結(jié)束)\n");scanf("%d %d",&p1->p,&p1->e);while(p1->e!=0){p2->next=p1;p2=p1;p1=(P_Polynomial)malloc(sizeof(Polynomial));scanf("%d %d",&p1->p,&p1->e);}p2->next=NULL;free(p1);return head; } void Add_polynomial(P_Polynomial p1,P_Polynomial p2) {//多項(xiàng)式相加P_Polynomial pre_p1,cur_p1,cur_p2;pre_p1=p1;//p1的前指針cur_p1=p1->next;cur_p1=p2->next;// p1和p2的當(dāng)前指針while(cur_p1&&cur_p2){if(cur_p1->e==cur_p2->e)// 如果p1和p2的冪相等,則相加并入p1{cur_p1->p=cur_p1->p+cur_p2->p;if(cur_p1->p==0)//if p==0{pre_p1->next=cur_p1->next;free(cur_p1);cur_p1=pre_p1->next;cur_p2=cur_p2->next; }else// if p!=0{pre_p1=cur_p1;cur_p1=cur_p1->next;cur_p2=cur_p2->next;}}continue;//continue find...if(cur_p1->e<cur_p2->e){pre_p1=cur_p1;cur_p1=cur_p1->next;}else{P_Polynomial temp;if(!(temp=(P_Polynomial)malloc(sizeof(Polynomial)))){printf("內(nèi)存不足。。。");exit(0);}temp->p=cur_p2->p;temp->e=cur_p2->e;temp->next=cur_p1;pre_p1->next=temp;pre_p1=pre_p1->next;cur_p2=cur_p2->next;//在p1中插入p2}}while(cur_p2){P_Polynomial temp;if(!(temp=(P_Polynomial)malloc(sizeof(Polynomial)))){printf("內(nèi)存不足。。。");exit(0);}temp->p=cur_p2->p;temp->e=cur_p2->e;temp->next=NULL;pre_p1->next=temp;pre_p1=pre_p1->next;cur_p2=cur_p2->next;} } P_Polynomial Mul_polynomial(P_Polynomial *exp1,P_Polynomial *exp2) {//多項(xiàng)式相乘P_Polynomial head,p1,p2,last,pre,px,q;int flag=1;head=p1=*exp1;p1=p1->next;for(;p1->next!=NULL;p1=p1->next);px=last=p1;p1=(*exp1)->next;while(p1!=px->next){pre=p1;flag=1;p2=(*exp2)->next;while(p2){if(flag){p1->p=p1->p*p2->p;p1->e=p1->e+p2->e;p2=p2->next;flag=0;}else{q=(P_Polynomial)malloc(sizeof(Polynomial));q->p=pre->p*p2->p;q->e=pre->e+p2->e;last->next=q;last=q;p2=p2->next;}}p1=p1->next;last->next=NULL;}return head; } P_Polynomial Sort_polynomial(P_Polynomial pol) {//對多項(xiàng)式排序,P_Polynomial head=pol,p,q,r,t;if(head->next==NULL)printf("input error!!! ");else{p=head->next;q=p->next;p->next=NULL;p=q;}while(p!=NULL){r = head;q = r->next;while(q != NULL&& q->e < p->e){r = q;q = q->next;}t=p->next; p->next=r->next;r->next=p;p=t;}return(head); } P_Polynomial Combine_polynomial(P_Polynomial head) {//對指數(shù)相同的多項(xiàng)式進(jìn)行合并。。P_Polynomial p1,p2;p1=head->next;while(p1->next!=NULL){if(p1->next->e==p1->e){p2=p1->next;p1->e=p1->e+p2->e;p1->next=p1->next->next;free(p2);}else{p1=p1->next;}}return head; } void output(P_Polynomial head) {P_Polynomial p1;p1=head->next;while(p1!=NULL){if(p1->e<0&&p1!=NULL)printf("\b\b");printf("%dX(%d)+",p1->p,p1->e);p1=p1->next;}printf("\b");printf("\n"); } int main() {P_Polynomial p1,p2,add,mul;printf("please input p1:\n");p1=Input();printf("please input p2:\n");p2=Input(); // printf("p1+p2="); // add=Add_polynomial(p1,p2);// output(add);nprintf("p1*p2=");mul=Mul_polynomial(&p1,&p2);Sort_polynomial(mul);Combine_polynomial(mul);output(mul);return 0;}


轉(zhuǎn)載于:https://www.cnblogs.com/snake-hand/p/3191949.html

總結(jié)

以上是生活随笔為你收集整理的多项式相乘与相加演示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。