问题描述
我想在列表末尾添加一个项目。我不明白为什么该程序正在编译,但是出现了问题并停止了执行。注释函数的最后一行,一切正常,但是很明显,它丢失了指向列表最后一个元素的指针。我认为这与“ 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循环之后{ {1}}等于ptr
。
要解决您的问题,请使用以下while循环:
NULL