首页 > 其他分享 >关于链表逆序的(递归方法)

关于链表逆序的(递归方法)

时间:2024-09-19 14:53:10浏览次数:11  
标签:head off 递归 next 链表 NULL LinkNode 逆序

LinkNode*turn off (LinkNode * head){
head->next->next = head;
head->next =NULL;
return head;//这里我们需要返回新的头(head);
}

以上我们创建了一个简单但函数还不是递归的。上述我们不可以从头开始,要从尾巴开始;这个时候需要递归一下到最后一个节点。即:

LinkNode*turn off (LinkNode * head){
LinkNode * newhead = turn off(head->next);//这里为啥是head->next因为需要走向下一个节点,每一次递归直到最后。
head->next->next = head;
head->next =NULL;
return head;//这里我们需要返回新的头(head);
}

这种情况我们又有东西没考虑周全。如果说他只有一个节点或者是空的;

LinkNode*turn off (LinkNode * head){
if(head==NULL||head->next==NULL)//是空的话我们就直接返回头;
return head;
else{//不是的话我们就开始递归他;

LinkNode * newhead = turn off(head->next);//这里为啥是head->next因为需要走向下一个节点,每一次递归直到最后。
head->next->next = head;
head->next =NULL;
return head;//这里我们需要返回新的头(head);
    }
}

这样其实代码已经完成了,但是还有一点个人之前不懂得(遇到的分析困难)

有所不对还望指出,本文只写了此题递归的中心思想;还有前面的创建表,打印表等自己去尝试一下

标签:head,off,递归,next,链表,NULL,LinkNode,逆序
From: https://blog.csdn.net/2402_85360089/article/details/142359440

相关文章

  • 探秘Python中的链表:从零开始的奇妙之旅
    引言链表之所以重要,是因为它提供了一种灵活的方式来存储和操作数据集合。不同于数组,链表允许我们在无需重新分配内存的情况下动态地添加或删除元素。这使得它成为处理不确定大小数据集的理想选择。此外,在某些特定场景下(如实现缓存机制),链表可以比其他数据结构表现得更加出色......
  • 探秘Python中的链表:从零开始的奇妙之旅
    引言链表之所以重要,是因为它提供了一种灵活的方式来存储和操作数据集合。不同于数组,链表允许我们在无需重新分配内存的情况下动态地添加或删除元素。这使得它成为处理不确定大小数据集的理想选择。此外,在某些特定场景下(如实现缓存机制),链表可以比其他数据结构表现得更加出色。基础......
  • Python中 递归(Recursion)的使用浅析
    递归的定义递归是一种在函数定义中调用函数自身的编程技巧和算法设计方法。递归中有两个关键要素1. 递归的终止条件。当满足这个条件时,递归不再继续调用自身,而是开始返回结果。这也叫 递归基例(BaseCase)。 如果没有正确设置递归基例,递归函数将无限地调用自身,直到耗尽系......
  • C----函数递归之反汇编
    环境win10vc6.0debug代码关于求阶层问题:n!=n(n-1)!;(n-1)!=(n-1)(n-2)!例如5!=5(4)!4!=43!3!=32!2!=21函数递归的出口是1,所以函数递归最重要的条件是去寻找递归的出口intfun(inti){intsum=0;if(i==1){return1;}else{sum=......
  • 【快慢指针】突破环形链表
      ......
  • Java语言程序设计基础篇_编程练习题*18.28 (非递归目录大小)
    目录题目:*18.28(非递归目录大小)习题思路代码示例输出结果题目:*18.28(非递归目录大小)不使用递归改写程序清单18-7习题思路(getSize方法)创建一个变量表示总共的大小。传入路径,创建File文件。创建ArrayList<File>列表,并添加传入的文件。如果列表不为空,则进......
  • YOLOv9改进策略【卷积层】| GnConv:一种通过门控卷积和递归设计来实现高效、可扩展、平
    一、本文介绍本文记录的是利用GnConv优化YOLOv9的目标检测方法研究。YOLOv9在进行目标检测时,需要对不同层次的特征进行融合。GnConv可以考虑更高阶的空间交互,能够更好地捕捉特征之间的复杂关系,从而增强特征融合的效果,提高模型对目标的检测能力。文章目录一、本文介绍二......
  • 代码随想录Day3 | LeetCode 203. 移除链表元素、LeetCode 707. 设计链表、LeetCode 20
    LeetCode203.移除链表元素链表基础概念题,也可以用递归做,不过我们把递归的思想放在更能体现它的LeetCode206.反转链表#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next......
  • 代码随想录Day4 | LeetCode 24. 两两交换链表中的节点、LeetCode 19. 删除链表的倒数
    LeetCode24.两两交换链表中的节点递归思想#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defswapPairs(self,head:Optional[ListNode......
  • 代码随想录算法训练营第三天|203移除链表元素 707设计链表 206反转链表
    203.移除链表元素题意:删除链表中等于给定值val的所有节点。示例1:输入:head=[1,2,6,3,4,5,6],val=6输出:[1,2,3,4,5]示例2:输入:head=[],val=1输出:[]示例3:输入:head=[7,7,7,7],val=7输出:[]链表一直是处理的不太好的数据结构,太久没处理过,第一次做......