递归方法
p1 和p2指针分别指向当前递归子链表list1的第一个和第二结点。然后对以p2为首结点的子链表list2进行递归逆转;则p2节点将成为list2r逆转后的尾结点,而此时函数返回的头结点将是原list2的尾结点(如下图)。最后我们只要把p2的next指向p1就OK了。
node* recursive_Link(node* head)
{
if(head == NULL || head->next == NULL)
return head;
node* p1 = head;
node* p2 = p1->next; //p2其实记录的下一步递归过程后的尾结点
head = recursive_Link(p2);
p2->next = p1;
p1->next = NULL;
return head;
}