根据左右半区重新排列链表
题目描述:
给定一个链表的头结点,其长度为N。如果长度为偶数的情况下,认为前N/2为左半区,后N/2为右半区;如果N为奇数,则认为前N/2为左半区,后N/2+1为右半区。根据如下例子中规则重新排列链表。
例子:
假设原链表为1->2->3->4->5->NULL,调整后为1->3->2->4->5->NULL。
解题思路:
主要的解题思路在于找到链表的中间节点。中间节点即为右区开始节点的上一个节点。而后一个指针指向左半区开始节点,一个指针指向右半区开始节点;不断调整链表的指向即可。需要注意的地方是根据规则找到中间节点,和找到中间节点后需要将左右半区断开。
代码如下:
|
|