【发布时间】:2016-04-01 12:06:12
【问题描述】:
美好的一天!我正在制作一个使用链表模拟多项式的程序。所以我有两个课程:Term 和 Poly。 Term 类具有三个私有属性,它们是:int coef、int exp 和 Term *next。 Poly 类只有一个属性,即用于声明为 Term *header 的头节点。我试图覆盖运算符“=”以便我可以这样做:
Poly p1; //creates a header note; basically this is an empty linkedlist
p1.addTerm(4, 5); //adds a term to the polynomial
Poly p2;
p2 = p1; //deletes/clears all the contents of p2 and makes a copy of all the contents of p1
addTerm 函数工作正常,构造函数也是如此。我想问题是“=”运算符的覆盖。所以这是我的代码:
Poly Poly::operator =(const Poly &source) {
clearPoly();
Term *t = header;
Term *s = source.header->getNext();
while(s != NULL) {
t->setNext(new Term(s->getCoef(), s->getExp()));
t = t->getNext();
s = s->getNext();
}
return *this;}
请帮助我 :( 顺便说一下,如果我的问题有什么不清楚的地方,请告诉我。
其他发现
尝试调试后,我缩小了问题范围。所以这就是我发现的。我试图编辑运算符 = 的实现。这里是
Poly Poly::operator =(const Poly &source) {
clearPoly();
Term *t = header;
Term *s = source.header->getNext();
while(s != NULL) {
t->setNext(new Term(s->getCoef(), s->getExp()));
t = t->getNext();
s = s->getNext();
}
display();
return *this;
}
实现中的显示函数显示所需的输出。但是,显示函数主要输出不需要的/垃圾值。
实现中显示函数的结果
5x^6 3x^5 1x^1
主要显示功能的结果
5574864x^5570756 5575824x^5575896 5598264x^5574864
你知道这是怎么不正常的吗?
【问题讨论】:
-
等一下,我会编辑我的帖子
-
请不要贴代码截图,选择更好的标题。
-
@deviantfan 对不起,先生。我这样做是因为使用“插入代码”粘贴我的代码有时会破坏缩进,因此难以阅读。但注意到先生!下一次,我不会犯同样的错误。但是你知道我的问题的答案吗?
-
@jude 很抱歉,只需修复缩进即可。 4 个前导空格表示一个代码块,不显示。
标签: c++ linked-list