我不能通过引用我的节点传递

时间:2018-06-08 21:06:33

标签: c pointers pass-by-reference c11

我不想创建通用*头节点,我想通过引用传递并偶然我的数据但是虽然为下一个节点创建新节点但我无法到达我的主节点上的新节点。 我在主要看n1next我看到它是null。为什么?有什么问题?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

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

void add(struct node** head,int data){
    struct node * tmp = *head;

    while(tmp != NULL){
        tmp = tmp->next;
    }
    tmp = (struct node*) malloc(sizeof(struct node));
    tmp->data= data;
    tmp->next=NULL;
}

int main()
{
    struct node n1;

    n1.data=5;
    n1.next=NULL;

    add(&(n1.next),15);
    printf("%d",n1.next->data);

    return 0;
}

1 个答案:

答案 0 :(得分:0)

您是否尝试传入列表中的最后一个next指针,然后将其更新为指向新节点,而不是使用头指针?如果是,add()应为

void add(struct node** head, int data) {
    struct node* p = malloc(sizeof(*p));
    p->data = data;
    p->next = NULL;

    *head = p;
}