gpt4 book ai didi

c - 在C中递归地从链接队列中删除

转载 作者:行者123 更新时间:2023-11-30 18:50:21 25 4
gpt4 key购买 nike

我得到了这个链接队列代码,用于从 C 语言的链接队列结构中删除元素。通常我会以不同的方式实现它,但该代码使用递归。它会做它应该做的事情吗?为什么?如果没有,有没有办法解决它?我对递归这件事真的很陌生。谢谢!

typedef struct telement T;
struct telement{
int value;
T* next;
};

void Out (T **A){
if ((*A)->next == NULL){
printf("\n --I'm removing element with value %d.---", (*A)->value);
(*A) = NULL;
free(*A);
}
else{
Out(&(*A)->next);
}
}

最佳答案

此函数确实删除最后一个元素。请注意,在递归的最后一步,A 将指向列表头指针,或倒数第二个元素的 next 指针。

然后它将将此指针设置为 NULL,从而取消列表中最后一个元素的链接。

但是,它不会释放最后一个元素,因为 free(NULL) 不执行任何操作。

关于c - 在C中递归地从链接队列中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40391421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com