首页 > 解决方案 > C:在列表末尾添加一个元素

问题描述

我想在列表末尾添加一个项目。我不明白为什么程序正在编译,但随后出现问题并停止执行。注释函数的最后一行一切正常,但显然它丢失了指向列表最后一个元素的指针。我认为这与“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; }

标签: clistcompiler-errorscodeblocks

解决方案


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

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

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

推荐阅读