在使用LinkedList

时间:2015-12-27 11:32:10

标签: c++ linked-list

美好的一天!我正在制作一个使用链表模拟多项式的程序。所以我有两个类:Term和Poly。 Term类有三个私有属性,分别是:int coef,int exp和Term * next。 Poly Class只有一个属性,用于标题节点,声明为Term *标头。我试图覆盖运算符" ="所以我可以这样做:

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;}

所以这是我的主要内容: enter image description here

这是结果: enter image description here

请帮助我:(顺便说一句,如果我的问题不清楚,请告诉我。

其他调查结果

在尝试调试之后,我已经缩小了问题范围。所以这就是我发现的。我试着编辑我的operator =的实现。这是

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;
}

实现中的显示功能显示所需的输出。但是,在main中,显示功能输出不需要的/垃圾值。

实施中显示功能的结果
5x ^ 6 3x ^ 5 1x ^ 1

主要显示功能的结果
5574864x ^ 5570756 5575824x ^ 5575896 5598264x ^ 5574864

有关这种行为不端的任何想法吗?

1 个答案:

答案 0 :(得分:0)

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