【问题标题】:Need help on my C++ code on simulating a Polynomial using LinkedList需要有关使用 LinkedList 模拟多项式的 C++ 代码的帮助
【发布时间】: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


【解决方案1】:

How to clone object in C++ ? Or Is there another solution? 从我看到你想克隆一个对象。看看这里的答案是否有效。由于某种原因,我无法发表评论,所以我回答了。如果这是正确的答案,请不要代表我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-10
    • 2023-03-03
    • 1970-01-01
    • 2023-03-09
    • 2011-09-11
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多