Welcome

首页 / 软件开发 / 数据结构与算法 / [单链表]多项式乘法

[单链表]多项式乘法2013-11-29《数据结构与算法分析 C语言描述》表,栈与队列部分课后习题

//Code by Pnig0s1992//Date:2012,3,22 #include <stdio.h>#include "Header.h" void MultPolynomial(LinkList Py1,LinkList Py2,LinkList LinkRc);void PrintfPolynomial(LinkList LinkRs);int main(int argc,char **argv){LinkNode Ploy1;Ploy1.pNext = NULL;Insert(0,6,&Ploy1);Insert(1,5,&Ploy1);Insert(2,4,&Ploy1);Insert(3,3,&Ploy1); LinkNode Ploy2;Ploy2.pNext = NULL;Insert(0,10,&Ploy2);Insert(1,9,&Ploy2);Insert(2,8,&Ploy2);Insert(3,7,&Ploy2);LinkNode LinkResult; LinkResult.pNext = NULL;MultPolynomial(&Ploy1,&Ploy2,&LinkResult);printf("
Poly1:");PrintfPolynomial(&Ploy1);printf("
Ploy2:");PrintfPolynomial(&Ploy2);printf("
The Multi result:");PrintfPolynomial(&LinkResult);system("pause");return 0;}//打印多项式乘法结果void PrintfPolynomial(LinkList LinkRs){LinkList LinkTemp = LinkRs->pNext;while(LinkTemp != NULL){printf("+%dX^%d",LinkTemp->Coefficient,LinkTemp->Exponent);LinkTemp = LinkTemp->pNext;}} void MultPolynomial(LinkList Py1,LinkList Py2,LinkList LinkRc){int iTempExp = 0;int iTempCoe = 0;LinkList LinkPy1 = Py1->pNext;LinkList LinkPy2 = Py2->pNext; while(LinkPy2 != NULL){LinkPy1 = Py1->pNext;//每次循环回置头结点while(LinkPy1 != NULL){iTempExp = LinkPy1->Exponent+LinkPy2->Exponent;iTempCoe = LinkPy1->Coefficient*LinkPy2->Coefficient;if(isEmpty(LinkRc)){Insert(iTempExp,iTempCoe,LinkRc);}else{LinkList LinkResult = LinkRc->pNext;while(LinkResult != NULL){if(LinkResult->Exponent == iTempExp){LinkResult->Coefficient += iTempCoe;break;}else if((LinkResult->Exponent < iTempExp && LinkResult->pNext->Exponent > iTempExp) || isLast(LinkResult)){Insert(iTempExp,iTempCoe,LinkResult);break;}LinkResult = LinkResult->pNext;} }LinkPy1 = LinkPy1->pNext;}LinkPy2 = LinkPy2->pNext;}}
本文出自 “About:Blank H4cking” 博客,请务必保留此出处http://pnig0s1992.blog.51cto.com/393390/813245