> 育儿
递归用循环怎么实现(递归循环效率)
导语:面试系列:使用递归、循环、栈三种方式实现无环单链表反转
链表反转是常见的经典面试题目之一,常常用于考察面试者基本算法能力与编码能力的;更进一步会在空间复杂度上进行一定的限制,或者要求使用多种方式实现。
下面就介绍三种常见的实现方式。
方式一:借助栈这种数据结构如果对空间使用没有限制的话,可以借助栈这种数据结构来实现。栈的特性是后进先出,只需要对链表进行遍历并压栈,然后依次弹出;弹出过程中需要记录上一个弹出元素,将上一个元素的next指向本次弹出元素,依次循环;
注意弹出最后一个元素后,需要将其next设置为null。
具体实现如下:
链表反转 - 栈
方案二:使用指针移动进行迭代处理要求空间复杂度为1,这时候就不能借助栈这种数据结构,需要通循环迭代与过指针移动遍历处理。
需要设置三个指针,分别记录前一个元素,当前遍历的元素,当前要遍历元素的下一个元素。
具体实现如下:
链表反转,循环实现
方案三:递归实现在递归函数中,按照顺序传入两个相邻元素;
每次进行指针反转,直到遍历到最后元素为止
递归实现反转
相关文章面试系列:七道手写代码面试题及思路解析,值得收藏
面试系列:使用递归实现字符串反转输出
本文内容由小茹整理编辑!