如何向链表添加内容

时间:2013-06-02 19:50:04

标签: c++ class pointers linked-list memory-address

我对我得到的错误感到有些困惑。我创建了一个名为“SensorNode”的类,每个SensorNode都有一个链接的传感器列表。 SensorNode的一个数据成员是名为mySensors的SensorBlock(链接列表)指针。 mySensors应该指向传感器节点所拥有的传感器链接列表中的第一个传感器。这是SensorNode的类声明:

class SensorNode {
    char* NodeName;
    int NodeID;
    LOCATION Node1;
    float batt;
    int func;
    SensorBlock *mySensors;


public:
    SensorNode(char *n, float x, float y, float z, int i, float ah);
    void print();
    void setOK(int o);
    int getOK();
    void setLOC(float longi, float lat, float h);
    int amIThisSensorNode(char *n);
    void addSensorToNode(sensor *s);
};

这里是SensorBlock的类声明:

class SensorBlock {

    friend class SensorNode;
    SensorBlock * LLelement;
    sensor * SensEl;
};

我的问题在于我的void addSensorToNode(sensor * s)函数。参数s指向一个传感器,该传感器应该被添加到属于该节点的传感器列表的末尾。我无法弄清楚如何做到这一点,因为它不是我正在创建和添加的新传感器,而是指向我正在添加的传感器的指针。

这是我到目前为止所拥有的:

void SensorNode::addSensorToNode(sensor *s) {
    if(mySensors == '\0') //mySensors is first initialized to NULL
    {
        mySensors = s; //I get an error on this line.
    }
    else {

    }
}

我不知道如何解决上面这行的错误,当mySensors不再等于null时,我不知道在“else”中放什么。如果我解决了上述错误,我可能能够更好地理解新传感器的添加过程。提前感谢您提供任何帮助!!

1 个答案:

答案 0 :(得分:1)

mySensors = s应为mySensors.SensEl= s

因为mySensors的类型为SensorBlock,而s为sensor

void SensorNode::addSensorToNode(sensor *s) {
    if(mySensors == NULL) //mySensors is first initialized to NULL
    {
        mySensors = new SensorBlock();
        mySensors->SensEl = s; //I get an error on this line.
        mySensors->LLelement = NULL;
    }
    else {

       SensorBlock newBlock = new SensorBlock();
       newBlock->SensEl = s;
       newBlock->LLelement = NULL;
       mySensors->LLelement = newBlock;

    }
}