struct node{
char * title;
char * type;
struct node * next;
};
typedef struct node headPtr;
headPtr * removeFromFront(headPtr * List){
if(List->next==NULL){
return NULL;
}
else {
List=List->next;
return List;
}
}
这是我的结构和我的链表功能,用于删除前面的第一个元素,但我不明白为什么它不工作。它不会返回我想要的。链接列表,从前面删除节点?
有人能告诉我我做错了什么吗?
感谢前纠正我。我想知道,这与他的代码实际上不一样。这个可能会更好。在他的代码中,他返回了“List”修改,这是一个局部变量。这不是未定义的行为吗? –
Nop,他返回包含在局部变量中的地址,这是有效的(malloc以同样的方式工作)。如果在函数('int array [10];')中分配了一个数组并且返回了它的地址,那么你是对的,它会变成未定义的行为。 – Taiki
这应该是'if(List == NULL)...'。 –