这个指针--C ++链表

时间:2012-03-11 16:50:57

标签: pointers struct linked-list this

我正在尝试使用结构创建链接列表。这个想法是使用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构造函数中遇到错误。

2 个答案:

答案 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;

你看,第二个版本看起来像第一个:)