数据结构之一元多项式加法(C++版)

#include <iostream>
#include <stdlib.h>
using namespace std;

typedef struct LNode{
float coef; //系数
int expn; //指数
struct LNode *next; //指针域
}LNode, *SLink;

int main()
{
//一元多项式加法,输入两个一元多项式La, Lb,输出两个一元多项式的和Lc
SLink La, Lb, Lc, pa, pb, pc, ra, rb, q;
int m, n, j;
cout << "请输入一元多项式La的项数:";
cin >> m;
La = new LNode;
ra = La;
if(!La) exit(0); //存储空间分配失败
cout << "依次输入" << m << "个项的系数指数:";
for(j = 0; j < m; j++)
{
pa = new LNode; //生成新节点
cin >> pa->coef >> pa->expn;
ra->next = pa; ra = pa; //插入到表头
}
ra->next = NULL;
cout << "请输入一元多项式Lb的项数:";
cin >> n;
Lb = new LNode;
rb = Lb;
if(!Lb) exit(0); //存储空间分配失败
cout << "依次输入" << n << "个项的系数指数:";
for(j = 0; j < n; j++)
{
pb = new LNode; //生成新节点
cin >> pb->coef >> pb->expn;
rb->next = pb; rb = pb; //插入到表头
}
m += n;
rb->next = NULL;
pa = La->next; pb = Lb->next; Lc = pc = La; q = Lc->next;
while(pa && pb) //将pa,pb节点按大小一次插入c中
{
if(pa->expn < pb->expn)
{
pc->next = pa; pc = pa; pa = pa->next;
}
else if(pa->expn > pb->expn)
{
pc->next = pb; pc = pb; pb = pb->next;
}
else
{
pa->coef = pa->coef + pb->coef; pc->next = pa; pc = pa; pa = pa->next; pb = pb->next;
m--;
}
}
pc->next = pa ? pa : pb;

delete Lb; //释放Lb头节点
j = 0;
cout << "两一元多项式的和: Lc = ";
while(j < m)
{
cout << q->coef << "x^" << q->expn;
if(j < m - 1)
cout << " + ";
q = q->next;
j++;
}
cout << endl;
}//MergeList_L

原文链接: https://www.cnblogs.com/wwttsqt/p/7783208.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    数据结构之一元多项式加法(C++版)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/262547

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午3:15
下一篇 2023年2月14日 下午3:15

相关推荐