永发信息网

一题数据结构题,请高手帮忙解决啊..

答案:4  悬赏:30  手机版
解决时间 2021-07-20 06:58
要求从键盘任意输入两个多项式,以及他们之间进行四则运算的符号,计算出两个多项式进行四则运算之后得到的新的多项式。
例如两个多项式3x^2+6x+3和3x^3-x^2-6x+10,他们之间进行加运算,则得到新的多项式为3x^3+2x^2+13。
存储方式可以任意选择数组或者链表。键盘的输入方式以及输出方式自定。
最佳答案
还是自己看数据结构的书吧~
全部回答

曾经编过一个只有相加和相减的要不要?要的话联系。

QQ拼音里可以弄!再下个语音计算器就OK了!但你要麦克风谢谢!

// 多项式相加 #include <iostream.h> #include <stdlib.h>

//节点定义 struct NodeType{ float coef; int exp; struct NodeType *next; };

// 多项式--初始化用 struct Poly_Item{ float coef; int exp; };

// 函数原型 bool Init(NodeType *&head); bool InsertAfter(NodeType *p, float c, int e); NodeType *Add_Poly(NodeType *a, NodeType *b); NodeType * Creat_Poly(Poly_Item v[], int n); void Print_Poly(char *s, NodeType *a);

// 初始化 bool Init(NodeType *&head) { if((head = new NodeType) == NULL) return false; head -> next = head; return true; }

// 插入一个节点 bool InsertAfter(NodeType *p, float c, int e) { NodeType *q; if((q = new NodeType) == NULL) return false; q -> coef = c; q -> exp = e; q -> next = p -> next; p -> next = q; return true; }

// 多项式相加 NodeType *Add_Poly(NodeType *a, NodeType *b) { float v; NodeType *c,*pc, *pa = a->next, *pb = b->next; Init(c); pc = c; while(pa != a && pb != b){ if(pa -> exp == pb -> exp){ if((v = pa -> coef + pb -> coef) != 0){ InsertAfter(pc, v, pa -> exp); pc = pc -> next; } pa = pa -> next; pb = pb -> next; }else if(pa -> exp < pb -> exp){ InsertAfter(pc, pa -> coef, pa -> exp); pc = pc -> next; pa = pa -> next; }else{ InsertAfter(pc, pb -> coef, pb -> exp); pc = pc -> next; pb = pb -> next; } } while(pa != a){ InsertAfter(pc, pa -> coef, pa -> exp); pc = pc -> next; pa = pa -> next; } while(pb != b){ InsertAfter(pc, pb -> coef, pb -> exp); pc = pc -> next; pb = pb -> next; } return c; }

// 建立多项式的循环单链表 NodeType * Creat_Poly(Poly_Item v[], int n) { NodeType *p; int j;

Init(p); for(j = 0; j < n; j++){ InsertAfter(p, v[j].coef, v[j].exp); p = p -> next; } return p -> next; }

// 打印函数 void Print_Poly(char *s, NodeType *a) { NodeType *p = a -> next;

cout << s; if(p != a){ cout << p -> coef << 'X' << '^' << p -> exp; p = p -> next; while(p != a){ if(p -> coef > 0) cout << '+'; cout << p -> coef << 'X' << '^' << p -> exp; p = p -> next; } } cout << endl; }

void main(void) { NodeType *a, *b, *c; Poly_Item v1[] = {{7, 0}, {-8, 1}, {9, 8}, {5, 17}}, v2[] = {{8, 1}, {22, 7}, {-6, 8}, {4, 12}, {-7, 15}};

a = Creat_Poly(v1, 4); b = Creat_Poly(v2, 5); Print_Poly("Poly_A =", a); Print_Poly("Poly_B =", b); c = Add_Poly(a, b); Print_Poly("Poly_c =", c); }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
3dmax 激活码申请号是TT61 1AP6 NFFV HTZ5 Z2
地下城狂战到40用什么武器。到45又该用什么?
请问:新的伊利小盒纯牛奶的外包装是不是换了
货币基金利率一定比银行定期存款利率高吗
她不回我短信怎么办?
开通超级QQ农场的等级也会快速增长吗?
可以资助高中生读书吗
诺基亚E63和诺基亚5630难抉择?
DNF要重新开罐子勒?怎么全部在收石像!
读卡器插上电脑了没反映是怎么回事啊?
子大怎么才能改掉?
天龙八部中的神器怎么弄,多少极开始弄
晋江的体育广告语
上体育课时饿了,吃什么东西最能补充体力
放了环总是腰痛,肚子痛,月经没规律请问是正
推荐资讯
问道单挑称号怎么弄,问道万神殿雕像怎么弄
QQ拼音的数字怎么设置
cf怎样就能关了防沉迷系统
玩QQ农场的朋友怎样找的到?
问道里的金需要多少潜力能够把金虹贯日从100
为什么我的黄钻充值没充起来?卡号是TS100001
爱情一定要建立在金钱之上吗?
谁知道QQlive为什么老是显示在线零小时?
晁盖的主要事迹简介,晁盖的绰号是什么 晁盖简
抢车位的爱心车位有什么用?
摄影三角架的品牌排名有吗?
我是一九八九年八月十七日生的,想占卜下我的
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?