单链表递归反转算法疑问
node* reverse( node* pNode, node*& head)
{
if ( (pNode == 0) || (pNode->next == 0) ) // 递归跳出条件
{
head = pNode; // 将链表切断,否则会形成回环
return pNode;
}
node* temp = reserve(pNode->next, head);// 递归
temp->next = pNode;// 将下一节点置为当前节点,既前置节点
return pNode;// 返回当前节点
}
一直没弄明白这个算法,请问在这里pNode和head分别是指代哪个节点呢???在解释中有这样一句话“不过这个方法有一个缺点,就是在反转后的最后一个结点会形成一个环,所以必须将函数的返回的节点的next域置为NULL。因为要改变head指针,所以我用了引用。”。。。。。我想知道这个引用的作用是什么??
谁能帮我详细的注释一下这个程序啊,我实在是看不懂了。。。谢谢!!!