将链表偶数位置的节点串成链表,移动到奇数位置节点组成的链表后
使用两个指针oddlist和evenlist指向奇数链表和偶数链表的表头节点。然后使用一个指针p1遍历原链表,每次将一个节点指向它的下下个节点,从而将奇数链表和偶数链表拆开
p1最后会执行原链表的最后一个结尾,这个节点可能是奇数链表的尾节点,也可能是偶数链表的尾节点。因此可以使用一个int变量odd做状态记录,通过odd判断p1是奇数链表的尾节点还是偶数链表的尾节点:
- 如果是奇数链表的尾节点,那么将这个节点的下一个节点设为偶数链表的头结点,处理完成
- 如果是偶数链表的尾节点,那么没有办法访问奇数链表的尾节点,因此使用另外一个指针p2,p2步伐p1慢,每次p1前移之前更新p2,因此在这种情况下p2指向奇数链表的尾节点,将其下一个节点设为偶数链表的头结点来完成处理