您的位置:首页 > 其它

用链表计算两个多项式的和

2017-11-12 19:57 441 查看
看严蔚敏的《数据结构》的书,第二章讲链表的时候介绍可以用链表来保存多项式的每一项(系数和指数),然后计算两个多项式的加减乘除,于是用C语言实现了其中的多项式加法的操作,这里把程序介绍一下。        首先是定义数据结构保存多项式的一项。
		typedef struct _PolyItem                {	                 float Coef; //系数	                 int Expn;   //指数	                 struct _PolyItem* pNext; //下一个节点指针                }PolyItem,*pPolyItem;	接下来是主程序:	
	PolyItem poly1st;// 第一个多项式的头	PolyItem poly2st;// 第二个多项式的头
// 通知用户输入第一个和第二个多项式 InitPolyNomial(&poly1st); InitPolyNomial(&poly2st);
// 计算多项式加法 printf("开始计算多项式的和\n");
pPolyItem pTemp=NULL; PolyItem result; pTemp=&result; pPolyItem p1st=poly1st.pNext; pPolyItem p2st=poly2st.pNext;
// 开始计算和 while(p1st!=NULL && p2st!=NULL) { // 合并同类项 if(p1st->Expn==p2st->Expn) { float fltResult=p1st->Coef+p2st->Coef; if(fltResult!=0) { pTemp->pNext=CreateNode(fltResult,p1st->Expn); pTemp=pTemp->pNext; }
p1st=p1st->pNext; p2st=p2st->pNext; } else { // 指数不同的项按照指数从小到大排列 if(p1st->Expn>p2st->Expn) { pTemp->pNext=CreateNode(p2st->Coef,p2st->Expn); pTemp=pTemp->pNext; p2st=p2st->pNext; } else { pTemp->pNext=CreateNode(p1st->Coef,p1st->Expn); pTemp=pTemp->pNext; p1st=p1st->pNext; } } }
// 如果其中某一个多项式还有多余的项,则添加到结果的尾部 if(p1st!=NULL) { while(p1st!=NULL) { pTemp->pNext=CreateNode(p1st->Coef,p1st->Expn); pTemp=pTemp->pNext; p1st=p1st->pNext; } }
if(p2st!=NULL) { while(p2st!=NULL) { pTemp->pNext=CreateNode(p2st->Coef,p2st->Expn); pTemp=pTemp->pNext; p2st=p2st->pNext; } } 下面计算多项式0.25+2x+3x^3和10+1.5x+3x^2+4x^4的值: 首先是输入数据:


  最后是计算结果


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: