我正在尝试使用结构创建链接列表。这个想法是使用2个不同的结构,一个是节点,另一个是指向节点的指针(因此,我可以将节点链接在一起)。
但我想将指向第一个节点的指针初始化为NULL,稍后再创建后续节点:
我在2个构造函数方法(List和Polynomial)中出错,我不能像我一样使用operator =。但我无法理解为什么。
struct List
{
//Data members to hold an array of pointers, pointing to a specific node
Node *list[100];
//Default constructor
List();
};
List::List()
{
*list[0] = NULL;
}
class Polynomial
{
public:
[...]
private:
List *poly; //Store the pointer links in an array
Node first_node;
int val;
};
Polynomial::Polynomial()
{
poly = new List();
}
/*******************************************************************************************************************************/
// Method : initialize()
// Description : This function creates the linked nodes
/*******************************************************************************************************************************/
Polynomial::void initialize(ifstream &file)
{
int y[20];
double x[20];
int i = 0, j = 0;
//Read from the file
file >> x[j];
file >> y[j];
first_node(x[j], y[j++]); //Create the first node with coef, and pwr
*poly->list[i] = &first_node; //Link to the fist node
//Creat a linked list
while(y[j] != 0)
{
file >> x[j];
file >> y[j];
*poly->list[++i] = new Node(x[j], y[j++]);
}
val = i+1; //Keeps track of the number of nodes
}
我在Polynomial构造函数和List构造函数中遇到错误。
答案 0 :(得分:2)
从您的代码中确切地知道您想要做什么并不是很清楚。
但是,代码:
Node *list[100];
表示100个节点指针的数组。
当你这样做时:
*list[0] = NULL;
你正在取消引用list [0]指针,这不是你想要的。 list [0]会给你一个Node *,而* list [0]会给你一个Node。
你的意思是:
list[0] = NULL;
或者你想创建一个Node **数组。我不确定你的代码是什么。
答案 1 :(得分:2)
似乎不像链接列表。也许您需要一个结构node
(对吗?)包含信息,而List
包含许多node
之后?如果这两个,我有两个解决方案:
第一。非常(非常)共同。
typedef struct nNode{
int info;
string name;
//and any information you want this node has.
struct nNode *pNext;
} Node;
二。我在你的代码中看到的样式。
typedef struct nNode{
int info;
string name;
//and any information you want this node has
}Node;
typedef struct nList{
Node node;
struct nList *pNext;
} List;
你看,第二个版本看起来像第一个:)