我是指针的新手,我在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));
}