C:在列表末尾添加一个元素

C: add an element at the end of a list

我想在列表末尾添加一个项目。我不明白为什么程序正在编译,但后来出现问题并停止执行。注释函数的最后一行一切正常,但显然它丢失了指向列表最后一个元素的指针。我认为这与“ptr”无法修改其“指针”有关。有人可以帮我吗?谢谢

void add_element(struct element *ptr, int item) {

while(ptr != NULL) {
    ptr = ptr->pointer;
}
struct element *ptr2;
ptr2 = (struct element*)malloc(sizeof(struct element));
ptr2->number = item;
ptr2->pointer = NULL;
ptr->pointer = ptr2; }

在你的代码的最后一行你不想给 ptr->pointer 赋值,但是在你的 while 循环中你的条件说:如果 ptr 不为 NULL 我们继续,所以在你的 while 结束后循环 ptr 等于 NULL.

要解决您的问题,请使用此 while 循环:

while(ptr->pointer != NULL) {
    ptr = ptr->pointer;
}