附上递归的算法:
LinkList ReverseLinkList( pNode PreNode, pNode CurrentNode )
{
if(!CurrentNode) /*如果当前节点指针为空,则返回NULL,此种情况只有在*/
return NULL; /*链表头指针为空时才可能执行到*/
if(!CurrentNode->next) /*如果下一节点指针为空,则将当前节点next指针指向上一节点,并*/
{ /*返回当前节点指针,次种情况只有在当前节点为尾节点时才能执行到*/
CurrentNode->next=PreNode;
return CurrentNode;
}
else /*其他节点的情况,先调用递归函数反转后续节点,再反转当前节点*/
{ /*并将递归函数返回来的尾节点指针向上层函数返回*/
LinkList FirstNode;
FirstNode=ReverseLinkList(CurrentNode,CurrentNode->next);
CurrentNode->next=PreNode;
return FirstNode; /*返回的是尾节点的指针,即反转后新链表的头指针*/
}
}