gpt4 book ai didi

c++ - 将指向传感器的指针添加到链表

转载 作者:行者123 更新时间:2023-11-28 07:35:09 27 4
gpt4 key购买 nike

我创建了一个名为“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;
};

在 addSensorToNode 函数中,如何将指向的传感器添加到链表中。基本上,我所拥有的在下面,我试图弄清楚“else”语句中的内容。我查看了教程,但它们是用于创建新对象并添加它,这是用于添加指向对象的指针。

void SensorNode::addSensorToNode(sensor *s) {
if(mySensors == '\0')
{
mySensors->SensEl = s;
}
else{
//maybe something like this???
// mySensors->SensEl =s;
// mySensors->LLelement++;

}
}

最佳答案

至少,单向链表由一个指向头节点的指针组成,每个节点都包含一个指向下一个节点的指针。

例如:

// list -> +-------+   +-------+
// | next -+-> | next -+-> ...
// | data | | data |
// +-------+ +-------+
struct ListNode {
ListNode *next;
void *data;
};
typedef ListNode *List;

显然你的命名方案与此冲突,数据是一个传感器,但你明白了。

现在,将它与您的代码进行比较,它看起来像:

  • 您的SensorBlock 确实是一个名称奇怪的列表节点,
  • 你的SensorBlock::SensEl是节点的数据负载
  • 你的 SensorBlock::LLelement 是下一个指针

如果奇怪的命名方案是您的障碍,您应该能够查看任何标准文本(或维基百科,或其他任何内容)并了解单链表的工作原理。

因此,标准的 push_front 看起来像这样:

void SensorNode::addSensorToNode(sensor *s) {
SensorBlock *block = new SensorBlock; // create the new node
block->SensEl = s; // attach its payload
block->LLelement = mySensors; // connect it to the list
mySensors = block; // make it the new head
}

请注意,它会自动处理 NULL 头(您确实在构造函数中将 mySensors 初始化为 NULL,对吧?)。

关于c++ - 将指向传感器的指针添加到链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16887099/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com