思路:采用最简单的打擂台的办法,题目要求删除节点,因此必须保留前驱。
引入遍历指针p,前驱指针pre,最小值指针min,最小值前驱pre_min。(最小值前驱可以省略,但是加入之后会使得程序更加清晰,况且一个指针的内存开销也不大)。
编程注意事项:
1.教材上最后free(L)了,个人觉得好像没有必要,只要将节点全部删除一直到最后L->next=null即可。
2.要明白free(p)干了什么,它只是把p所指向的内存空间交还给了操作系统,并不会将指针变为null,所以建议每次用完free后,手动设置p=null,减少内存中的野指针。
3.只有在首部节点就是最小值节点的时候才移动外指针,具体看下面的例子吧~