数据结构 递归算法解决单链表成对逆置问题。

单链表成对逆置问题

关于苏州大学872考研中出现的单链表成对逆置问题。

首先判断链表是否为空或者是否只含有一个节点。若是则返回L;

若不满足if条件,即链表中含有的节点能满足成对逆置条件,则进行成对逆置;

添加p、q节点分别指向逆置的后一个节点和下一组逆置的第一个节点。q充当递归调用中L的作用,即标记剩余未处理的链表。
添加指针p、q
逆置节点L、p,节点p指向L,节点L指向剩余未处理的链表(此处为D_Reverse(q));
逆置L、p,虚线中所标的即为剩余未处理代码
递归函数所得结果即为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;
}

(新人写程序,欢迎批评指正,定将虚心接受)

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值