老铁们,本期我们开讲单链表OJ题的讲解:
删除单链表中给定的val值,并将剩余的链表进行链接
本题中val的值是11,删除后的图示链接为 :>
显然,我们需要指针 cur 移动来寻找 指定数值val的值,此后运用值覆盖原理!!随后,将val所在空间进行释放
代码如下:
现对代码分模块进行解释 :>
在进行解释之前,先看看指针的走向过程 :>
指针cur的走向移动到第一个要删除的 val值的时候,请注意 prev 指针在cur之前 !!
这是为了更好的运用值覆盖原。如此,更好地理解了,为什么会有 prev指针的存在!!
除此之外,我更想解释地是,如下代码 :>
tail 在此作何用处!!
显然,tail 是为了保存下一个节点的值,以便于后续找到了指定值 val 后,经过释放后,更新 cur 的值
从而保证整体逻辑的严密性!!
还有以下的代码 :>
显然,这是一种特殊情况的考虑,即是要删除的 val 的值,位于第一位置,即头部处!!
这个时候,就需要更新 phead 的位置,毕竟一个链表中总要有象征性的头“phead”!!
当然了,还有一种极其特殊的情况需要考虑!!那就是,链表中全是要删除的 val 值
此时的这部分代码,也可以做充足的逻辑判断!!只是最终将无头 phead
即是返回的将是一个空链表!!仍然符合我们预期!!
现在,让给我们进入测试环节吧!!
代码执行的结果,如下所示 :>
好了! 本题的解析已结束!!希望能对老铁们有所帮助!!感谢阅读!!
标签:10,OJ,val,--,oss,链表,---,process,image From: https://blog.51cto.com/u_15808800/6145987