Я не могу передать по ссылке мой узел - PullRequest
0 голосов
/ 09 июня 2018

Я не хочу создавать общий * головной узел, и я хочу передать по ссылке и случайно мои данные, но, хотя создаю новый узел для следующего узла, я не могу добраться до моего нового узла на главном.Если я смотрю n1.next в основном, я вижу, что это ноль. Почему? Что не так?

#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 голосов
/ 09 июня 2018

Вместо использования указателя головы, вы пытаетесь передать последний указатель next в списке, а затем обновить его, чтобы он указывал на ваш новый узел?Если это так, add() должно быть

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

    *head = p;
}
...