单链表成对逆置问题
关于苏州大学872考研中出现的单链表成对逆置问题。
首先判断链表是否为空或者是否只含有一个节点。若是则返回L;
若不满足if条件,即链表中含有的节点能满足成对逆置条件,则进行成对逆置;
添加p、q节点分别指向逆置的后一个节点和下一组逆置的第一个节点。q充当递归调用中L的作用,即标记剩余未处理的链表。
逆置节点L、p,节点p指向L,节点L指向剩余未处理的链表(此处为D_Reverse(q));
递归函数所得结果即为p节点所指向的链表。最后返回节点p,即完成对链表的成对逆置。
下附代码
LinkList D_Reverse(LinkList &L){
if(L==NULL||L->next==NULL)
return L;
LNode *p = L->next,*q = p->next;
p->next = L;
L->next = D_Reverse(q);
return p;
}
(新人写程序,欢迎批评指正,定将虚心接受)