Pointers 这个指针-C++;链表

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

我试图创建一个带有结构的链表。想法是使用两个不同的结构,一个是节点,另一个是指向节点的指针(因此,我可以将节点链接在一起)

但我想将指向第一个节点的指针初始化为NULL,然后创建后续节点:

我在两个构造函数方法(列表和多项式)中有一个错误,我不能像现在这样使用操作符=了。但我不明白为什么

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()时,我遇到了一个错误……但是,我在代码中做错了什么?我有一个创建节点的结构节点。和一个结构列表,其中包含指向所有其他节点的指针。这个逻辑有什么问题吗?我现在已经包含在原始代码中,我尝试链接节点的部分,请你看看。但是,我在代码中做错了什么?我有一个创建节点的结构节点。和一个结构列表,其中包含指向所有其他节点的指针。这个逻辑有什么问题吗?我现在已经包含在原始代码中,我尝试链接节点的部分,请你看一下。