无法在LinkedList(C)上添加第一个

时间:2015-11-02 06:29:07

标签: c pointers linked-list

我是指针的新手,我在C中的LinkedList遇到了一些问题。一旦我将第一个节点添加到列表中,它就说根节点仍然是空的。任何帮助都是欣赏!!

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

typedef struct Nodo {
    int x;
    struct Nodo *next;
} Nodo;

int size(Nodo *nodo) {
    if (nodo == 0) {
        return 0;
    }
    int size = 0;
    Nodo *aux = nodo;

    while (aux->next != NULL) {
        aux = aux->next;
        size = size + 1;
    }

    return size;
}

一旦我将第一个元素添加到addNode函数内的列表中,它就会说地址已经改变。

void addNodo(Nodo *root, Nodo *nodo) {
    if (root == 0) {
        root = nodo;
        printf("New address: %p\n", root);
        return;
    } else {
        Nodo *aux = root;
        while (aux->next != NULL) {
            printf("%d, ", aux->x);
            aux = aux->next;
        }
            printf("%d\n", aux->x);
        aux->next = nodo;
    }
}

int main() {
    Nodo *root;      

    Nodo *sig = (Nodo *) malloc(sizeof(Nodo));
    sig->x = 1;

    Nodo *sig2 = (Nodo *) malloc(sizeof(Nodo));
    sig2->x = 1;

    addNodo(root, sig);

从函数调用返回后,它表示根节点仍为空(0)

    printf("Address: %p\n", root);

    addNodo(root, sig2);

    printf("Size: %d\n", size(root));

}

0 个答案:

没有答案