我试图在链接列表的末尾插入一个节点但由于某种原因我的打印功能告诉我列表是空的。
结构:
struct node{
int data;
struct nodeList *next;
};
这是我的addNode函数
struct node* addNode(struct node* List, int n){
struct node* newNode = (struct node*)malloc(sizeof(struct node));
struct node* temp = (struct node*)malloc(sizeof(struct node));
newNode->data = n;
newNode->next= NULL;
if(List == NULL){
List = newNode;
return List;
}
temp = List;
while(temp->next != NULL){
temp = temp->next;
}
temp->next = newNode;
return List;
}
我感谢任何帮助!
答案 0 :(得分:2)
您可能会错误地调用您的功能,正如其他人所说的那样。
struct node *numbers = NULL;
numbers = addNode(numbers, 5);
或者,您可以重写函数以使用双指针。这样就不必每次都必须将列表指针重新分配给addNode()
函数的结果。它还缩短了函数的实现。
void addNode(struct node **list, int n) {
struct node *newNode = malloc(sizeof(struct node));
newNode->data = n;
newNode->next= NULL;
while (*list){
list = &(*list)->next;
}
*list = newNode;
}
这可以像这样调用:
struct node *numbers = NULL;
addNode(&numbers, 4);
参考文献: