给定链表中的节点地址,获取节点的地址
obtain the address of a node given a node address in a linked list
所以我对遍历链表以及获取链表中的下一个节点有了很好的理解。现在我试着往另一个方向走,但我很快意识到这并不像看起来那么容易。不像数组,你可以向前和向后迭代。我似乎被难住了。
所以如果我有一个1 -> 2 -> 3 -> 4 -> NULL的列表我怎么去获取节点2的地址给定节点3的位置?
我开始摆弄下面的代码,它返回节点3之前的所有项。我不知道怎么才能得到前一个节点?顺便说一下,如果给searchList()
一个node->data值,它将返回节点的地址。使用上面的列表,searchList(3)
返回数据成员为3的节点的地址。
struct node {
int data;
node* next;
};
void llclass::getPrevious() {
node *stop = searchList(nodeItem),
*start = head;
while (start != stop) {
cout << start->data << endl;
start = start->next;
}
}
对于像你这样的单链表,如果只给节点3的地址,则不可能获得节点2的地址。您必须从头节点开始并向前迭代直到到达3,并跟踪前一个节点(在本例中为2)。或者,您可以使用包含"node *previous;"成员的双链表。
听起来像是您想要获得其值作为输入给您的节点的前一个节点。这应该可以帮你完成:
node* llclass::getPrevious(int item)
{
node* previous = NULL;
node* current = head;
while(current)
{
if (current->data == item)
{
return previous;
}
else
{
previous = current;
current = current->next;
}
}
return NULL;
}
相关文章:
- 反向给定链表中的K节点
- 将数组的地址分配给变量并删除
- 空基优化子对象的地址
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Boost Graph Library,修复节点大小
- C++中是否有一个函数可以为您获取指向该节点的所有指针的地址空间
- 如何在NS3中设置节点的IP地址和数据?
- 在C++中设置节点的内存地址
- C++:尝试将新节点添加到链表会产生"线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x0)"错误
- 不同节点的相同地址
- 存储链接列表节点地址
- 通过池分配器中的内存地址访问可用列表节点时出现问题
- 为节点分配指针地址
- 获取类型为"节点"的临时对象的地址
- 正在访问指针地址处的节点
- 如何返回节点的地址
- 在第三次调用中,当地址因本地作用域而被销毁时,temp2->next 如何能够访问第二个节点的地址?
- 复制构造函数双链接列表中的头节点和尾节点的地址不正确
- 给定链表中的节点地址,获取节点的地址