如何获取node->下一个指针的地址

时间:2017-07-25 12:36:44

标签: c++ pointers

我在Doubly Linked List上为以下函数编写代码

struct node {
    int data;
    struct node *next;
    struct node *prev;
};

/* Given a node as next_node, insert a new node before the given node */
void insertBefore(struct node** next_node, int new_data)

我从main函数调用了insertBefore():

 insertBefore(&head, 2);  // it works fine

但我不能做同样的前脑 - >接下来,因为下一个指针只是节点*不是节点**

insertBefore(head->(&next), 2);  // it doesn't works 

我如何解决问题。请帮助。谢谢

4 个答案:

答案 0 :(得分:1)

假设您的功能有效,&(head->next)就是您所需要的。

insertBefore(&(head->next), 2); 

答案 1 :(得分:1)

headinsertBefore(&head, 2);

的指针

next也是指针,是struct node的成员。

因此,如果您想通过next访问head(即指向某个节点的指针),那么,

语法为head->next。现在,您可以通过next获取&(head->next)的地址。

答案 2 :(得分:1)

更改函数以获取对节点指针的引用。

void insertBefore(node*& next_node, int new_data);
...
insertBefore(head->next, 2);

答案 3 :(得分:0)

取消引用指针而不是引用其地址似乎是不合逻辑的......

&(head->next)将起作用,但它可以正常工作,因为您取消引用指针(获取指针指向的值),而不是使用&再次获取该指针的地址。

->.(*next)相同。箭头只是获取指针指向的最简单方法。如果你想要指针本身的值,你所要做的只是head.next