我已经获得了这个链接的队列代码,用于从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);
}
}
答案 0 :(得分:2)
此函数会删除最后一个元素。请注意,在递归的最后一步,A
将指向列表头指针或倒数第二个元素的next
指针。
然后将此指针设置为NULL,取消链接列表中的最后一个元素。
但是,它不会释放最后一个元素,因为free(NULL)
什么都不做。