递归反转链表

之前我们用迭代方式反转了链表,通过遍历每个节点,然后通过三个临时节点分别保存前一个节点,当前节点和下一个节点,反转每个节点。这篇笔记我将介绍用递归的方式,反转链表
用递归反向打印那一节我们就说过递归是怎么一回事,我们在递归满足退出条件时候,通过两个临时节点指针,实现链表的反转,具体看下图演示

递归反转链表

先确定退出条件是达到最后一个节点时候,也就是x->link==NULL 时候递归开始退出,此时的x指向了200这个节点,新建节点指针q,并且用它来操作节点,使得q->link=p,再将p->link置为0,然后函数继续递归,p到了前一个节点然后再将q指向p的下一个节点,继续上一步的操作,直到p=50时候 ,链表就转换完成了。此时,p->link=NULL

void reverse(Node*p)//递归逆向链表
{
	if (p->link ==NULL)
	{
		head = p;
		return;
	}
	reverse(p->link);
	Node* q = p->link;
	q->link = p;
	p->link = NULL;
}
C++
C语言

递归反向打印

2024-11-14 16:59:21

C语言

双向链表实现

2024-11-14 17:03:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

Powered by atecplugins.com