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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

实验项目 3-4:一元多项式的乘法与加法运算

發(fā)布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实验项目 3-4:一元多项式的乘法与加法运算 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


代碼如下:

/*************************************************************************> File Name: AddPoly.c> Author: YueBo> Mail: yuebowhu@163.com> Created Time: 2016年12月17日 星期六 13時00分35秒************************************************************************/#include<stdio.h> #include <malloc.h>typedef struct PolyNode* Polynomial; struct PolyNode {int coef;int expon;Polynomial link; };void Print(Polynomial P) {int i = 0;if (!P) {printf("0 0");} else {while (P) {if (i) {printf(" ");}printf("%d %d", P->coef, P->expon);P = P->link;++i;}} }int Compare(int a, int b) {if (a > b) {return 1;}if (a < b) {return -1;}if (a == b) {return 0;} }void Attach(int coef, int expon, Polynomial* PtrRear) {Polynomial P;P = (Polynomial)malloc(sizeof(struct PolyNode));P->coef = coef;P->expon = expon;P->link = NULL;(*PtrRear)->link = P;*PtrRear = P; }Polynomial PolyAdd(Polynomial P1, Polynomial P2) {Polynomial front, rear, temp;int sum;// 為i方便表頭插入,先產(chǎn)生一個臨時空結(jié)點作為結(jié)果多項式的鏈表頭 rear = (Polynomial)malloc(sizeof(struct PolyNode)); front = rear;while (P1 && P2) {switch (Compare(P1->expon, P2->expon)) {case 1:Attach(P1->coef, P1->expon, &rear);P1 = P1->link;break;case -1:Attach(P2->coef, P2->expon, &rear);P2 = P2->link;break;case 0:sum = P1->coef + P2->coef;if (sum) {Attach(sum, P1->expon, &rear);}P1 = P1->link;P2 = P2->link;break;}}//將未處理完的另一個多項式的所有結(jié)點依次復(fù)制到結(jié)果鏈表中for (; P1; P1 = P1->link) {Attach(P1->coef, P1->expon, &rear);}for (; P2; P2 = P2->link) {Attach(P2->coef, P2->expon, &rear);}rear->link = NULL;temp = front;front = front->link; //令front指向多項式的第一項mZ free(temp); //釋放掉臨時空表頭結(jié)點return front; }Polynomial PolyMult(Polynomial P1, Polynomial P2) {Polynomial P = NULL, temp1, temp2, copyP2;copyP2 = P2;temp1 = (Polynomial)malloc(sizeof(struct PolyNode));while (P1) {P2 = copyP2;while (P2) {temp1->coef = P1->coef * P2->coef;temp1->expon = P1->expon + P2->expon;temp1->link = NULL;temp2 = P;P = PolyAdd(P, temp1);free(temp2);P2 = P2->link;}P1 = P1->link;}free(temp1);return P; }int main() {Polynomial P1 = NULL, P2 = NULL, sumP = NULL, multP = NULL, front = NULL, rear = NULL, tempNode = NULL;int N1, N2;int i;int temp_coef, temp_expon;scanf("%d", &N1);for (i = 0; i < N1; i++) {scanf("%d%d", &temp_coef, &temp_expon);tempNode = (Polynomial)malloc(sizeof(struct PolyNode));tempNode->coef = temp_coef;tempNode->expon = temp_expon;tempNode->link = NULL;if (i == 0) {P1 = rear = tempNode;} else {rear->link = tempNode;rear = rear->link;}}scanf("%d", &N2);for (i = 0; i < N2; i++) {scanf("%d%d", &temp_coef, &temp_expon);tempNode = (Polynomial)malloc(sizeof(struct PolyNode));tempNode->coef = temp_coef;tempNode->expon = temp_expon;tempNode->link = NULL;if (i == 0) {P2 = rear = tempNode;} else {rear->link = tempNode;rear = rear->link;}}multP = PolyMult(P1, P2);sumP = PolyAdd(P1, P2);Print(multP);printf("\n");Print(sumP);return 0; }

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的实验项目 3-4:一元多项式的乘法与加法运算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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