经过自己研究,对于单链表的逆序有了一定的了解,记录下来供以后自己查阅
1.无头单链表逆序
pNode* reverse_nohead(pNode* p)
{
if(p == NULL||p->next == NULL)
return p;
Node*ph = reverse_nohead(p->next);
p->next->next = p;
p->next = null;
return ph;
}
因为链表的逆置需要从最后一个节点开始,所以处理语句在递归语句的后面。先遍历到最后一个节点才开始进行逆置操作。
即
public void reverse(parameter p){
处理语句 // 先执行再依次递归执行,即对每个节点依次进行处理,顺递归
reverse(p.next);
处理语句 //先递归至最后一个节点,再执行操作,依次逆向进行处理,逆递归
}