搜索
写经验 领红包
 > 育儿

递归用循环怎么实现(递归循环效率)

导语:面试系列:使用递归、循环、栈三种方式实现无环单链表反转

链表反转是常见的经典面试题目之一,常常用于考察面试者基本算法能力与编码能力的;更进一步会在空间复杂度上进行一定的限制,或者要求使用多种方式实现。

下面就介绍三种常见的实现方式。

方式一:借助栈这种数据结构

如果对空间使用没有限制的话,可以借助栈这种数据结构来实现。栈的特性是后进先出,只需要对链表进行遍历并压栈,然后依次弹出;弹出过程中需要记录上一个弹出元素,将上一个元素的next指向本次弹出元素,依次循环;

注意弹出最后一个元素后,需要将其next设置为null。

具体实现如下:

链表反转 - 栈

方案二:使用指针移动进行迭代处理

要求空间复杂度为1,这时候就不能借助栈这种数据结构,需要通循环迭代与过指针移动遍历处理。

需要设置三个指针,分别记录前一个元素,当前遍历的元素,当前要遍历元素的下一个元素。

具体实现如下:

链表反转,循环实现

方案三:递归实现

在递归函数中,按照顺序传入两个相邻元素;

每次进行指针反转,直到遍历到最后元素为止

递归实现反转

相关文章

面试系列:七道手写代码面试题及思路解析,值得收藏

面试系列:使用递归实现字符串反转输出

本文内容由小茹整理编辑!