Pointers 这个指针-C++;链表
我试图创建一个带有结构的链表。想法是使用两个不同的结构,一个是节点,另一个是指向节点的指针(因此,我可以将节点链接在一起) 但我想将指向第一个节点的指针初始化为NULL,然后创建后续节点: 我在两个构造函数方法(列表和多项式)中有一个错误,我不能像现在这样使用操作符=了。但我不明白为什么Pointers 这个指针-C++;链表,pointers,struct,linked-list,this,Pointers,Struct,Linked List,This,我试图创建一个带有结构的链表。想法是使用两个不同的结构,一个是节点,另一个是指向节点的指针(因此,我可以将节点链接在一起) 但我想将指向第一个节点的指针初始化为NULL,然后创建后续节点: 我在两个构造函数方法(列表和多项式)中有一个错误,我不能像现在这样使用操作符=了。但我不明白为什么 struct List { //Data members to hold an array of pointers, pointing to a specific node Node *list
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
}
我在多项式构造函数和列表构造函数中遇到了错误。从您的代码中不太清楚您想要做什么 但是,守则:
Node *list[100];
表示100个节点指针的数组
当您这样做时:
*list[0] = NULL;
您正在取消引用列表[0]指针,这不是您想要的。列表[0]将为您获取一个节点*,而*列表[0]将为您获取一个节点
你的意思是:
list[0] = NULL;
或者要创建节点**的数组。我不能从你的代码中确定你想要什么。从你的代码中不太清楚你想要做什么 但是,守则:
Node *list[100];
表示100个节点指针的数组
当您这样做时:
*list[0] = NULL;
您正在取消引用列表[0]指针,这不是您想要的。列表[0]将为您获取一个节点*,而*列表[0]将为您获取一个节点
你的意思是:
list[0] = NULL;
或者要创建节点**的数组。我无法从您的代码中确定您想要的是什么。它似乎不像链接列表。也许您需要一个包含信息的结构
节点(对吗?),然后列表包含许多节点?如果是这两种情况,我有两种解决方案:
首先。非常(而且非常)普遍
第二。我在代码中看到的样式
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;
你看,第二个版本看起来像第一个:)它看起来不像链接列表。也许您需要一个包含信息的结构节点(对吗?),然后列表包含许多节点?如果是这两种情况,我有两种解决方案:
首先。非常(而且非常)普遍
第二。我在代码中看到的样式
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;
你看,第二个版本看起来像第一个:)为什么不改用std::vector
呢?这看起来不像链表。错误:在list::list()构造函数中,没有与“operator=”匹配的项……多项式构造函数也存在相同的错误。我想实现我自己的节点。为什么不改用std::vector
?这看起来不像链表。错误:在list::list()构造函数中,没有与“operator=”匹配的项……多项式构造函数也存在相同的错误。我想实现我自己的节点。我正试图通过结构“list”访问每个节点,我想更改数据或将其与另一个节点链接在一起。我想将指向第一个节点的指针设置为NULL,意思是不指向任何对象……因为没有指向的对象。那么您想要的是“list[0]=NULL;”是,我明白我做错了什么,谢谢!然而,我在多项式构造函数中也遇到了另一个错误。我想做的是创建一个包含100个节点的列表,但是,当我执行poly=new list()时,我遇到了一个错误……我试图通过结构“list”访问每个节点,我想更改数据或将其与另一个节点链接在一起。我想将指向第一个节点的指针设置为NULL,这意味着,不指向任何东西…因为没有指向的东西。那么您想要的是“list[0]=NULL”;是的,我明白我做错了什么,谢谢!然而,我在多项式构造函数中也遇到了另一个错误。我想做的是创建一个有100个节点的列表,但是,当我执行poly=new list()时,我遇到了一个错误……但是,我在代码中做错了什么?我有一个创建节点的结构节点。和一个结构列表,其中包含指向所有其他节点的指针。这个逻辑有什么问题吗?我现在已经包含在原始代码中,我尝试链接节点的部分,请你看看。但是,我在代码中做错了什么?我有一个创建节点的结构节点。和一个结构列表,其中包含指向所有其他节点的指针。这个逻辑有什么问题吗?我现在已经包含在原始代码中,我尝试链接节点的部分,请你看一下。