做了一道题,题目如下:
设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点。
答案给的是C++代码,使用了引用&:
因为我用的是C语言,所以想改写成指针的版本,但是无论如何都不能得出正确结果。后来我瞎猫碰死耗子,用了二级指针,结果正确。
我开始的想法是:参照之前学习指针的示例,在函数中交换a b的值需要传地址进去,那么对结构体进行修改,也要传结构体的地址进去,形参也就变成二级指针了。
结果第二次我没用递归,用while循环遍历删除,这次直接传入结构体没用二级指针也能做对。
看了很多关于二级指针的博文还是百思不得其解,为什么在递归中必须使用二级指针呢?