使用两个链接列表

时间:2013-02-15 02:25:33

标签: c++ pointers error-handling operator-overloading

我需要创建两个单独的链接列表然后进行比较。但是,当我尝试使用相同的运算符重载为构造函数创建第二个列表时,我收到一个错误:

“类型多项式2 *的值不能用于初始化多项式类型的实体*”

以下是我的代码:

标题:

#include <iostream>
#include <string>

using namespace std; 

struct polynomial
{ 
    polynomial();
    polynomial(string newCoefficient, string newPower, polynomial *nextPtr);
    string coefficient;
    string power;
    polynomial *next; 
};

struct polynomial2
{ 
    polynomial2();
    polynomial2(string newCoefficient2, string newPower2, polynomial2 *nextPtr2);
    string coefficient2;
    string power2;
    polynomial *next2; 
};

class linkedList
{
public:
    linkedList();
    void callFunctions();
private:
    polynomial *head;
    polynomial2 *head2;
    void makeList(polynomial *head, polynomial2 *head2);
    void showList(polynomial *head);
    void compareNodes(polynomial *head, polynomial2 *head2);
};

#endif
/* defined(__Assignment3__Polynomial__) */

.CPP代码:

linkedList::linkedList()
{
    head = 0; 
};

polynomial::polynomial()
{
    coefficient = " "; 
    power = " "; 
    next = NULL;
};

polynomial2::polynomial2()
{
    coefficient2 = " "; 
    power2 = " "; 
    next2 = NULL
};

polynomial::polynomial(string newCoefficient, string newPower, polynomial *nextPtr )
    :
coefficient(newCoefficient),
    power(newPower), 
    next(nextPtr) 

{}

polynomial2::polynomial2(string newCoefficient2, string newPower2, polynomial2 *nextPtr2)
    :
coefficient2(newCoefficient2),
    power2(newPower2), 
    next2(nextPtr2)

{}

错误出现在.cpp文件的最后一行“next2(nextPtr2)”。 “nextPtr2”加下划线

3 个答案:

答案 0 :(得分:2)

在你的多项式2定义中,你的意思是:

polynomial2 *next2;

而不是

polynomial *next2;

答案 1 :(得分:2)

暂时编译错误,我想你可能正在咆哮错误的树。

这里的关键是你要比较两个基本上具有相同数据类型的列表。

我有一种强烈的感觉,你实际上并不想要两个单独的列表数据类型 - 你只需要一个。

所以你应该真正摆脱polynomial2并做到这一点:

polynomial *list1;
polynomial *list2;

答案 2 :(得分:2)

而且,既然你已经在使用stl,那么不使用std :: list&lt;&gt;的原因是什么?

struct polynomial
{ 
    polynomial()
      :coefficient(" "), power(" ") {}
    polynomial(string newCoefficient, string newPower)
      :coefficient(newCoefficient), power(newPower) {}
    string coefficient;
    string power;
};

然后

list<polynomial> list1;

如果在多项式上有相等运算符,则可以比较列表的相等性。并且可能还要做你需要做的所有其他事情。除非你给出的任务不允许使用std :: list,我想这可能。