题解 | 链表的奇偶重排
链表有个通病,那就是在循环的时候,它的尾巴一直在,你以为循环的时候,只是当前的节点,其实它带了一串很长的尾巴。
这个题目看起来很简单,就是在遍历的时候,判断当前的节点是奇数节点还是偶数节点,是奇数节点就接到奇数的节点上,是偶数的节点就接到偶数的节点上去,最后再把他们拼起来。
但是在循环的过程中,有一个比较容易出错的问题是,当循环结束的时候,如果最后一个节点是奇数节点的话,由于循环完了,current就为null结束了,导致偶数的处理还停留在上两次的状态,也就是它尾巴还接着最后一个奇数节点,还没轮到他处理呢,就结束了。这个时候就需要把他尾巴去掉。
因此需要单独的判断,如果尾巴是奇数节点,那么偶数的尾巴就为null。否则如果尾巴偶数节点,那么奇数节点还停留在上两步,月就是后面还跟着偶数的一个尾巴。
查看12道真题和解析
