Java面试题目-单链表翻转(递归+非递归实现)
Posted 低调小一
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面试题目-单链表翻转(递归+非递归实现)相关的知识,希望对你有一定的参考价值。
前言
个人在最近2年一直担任一面面试官,平时长问的题目就是单链表的翻转。发现很多面试同学只知道非递归实现,提到递归实现都是一脸懵逼。这里普及一下具体实现方案。
链表数据结构
我们这里就定义一个最简单的单链表:
class Node
Node next;
int val;
非递归
public static Node reverseNode(Node head)
if (head == null || head.next == null)
return head;
Node preNode, lastNode;
while (head != null)
lastNode = head.next;
head.next = preNode;
head = lastNode;
return preNode;
递归
public static Node reverseNode(Node node)
if (node == null || node.next == null)
return node;
Node lastNode = node.next;
node.next = null;
lastNode = reverseNode(lastNode);
lastNode.next = node;
return node;
以上是关于Java面试题目-单链表翻转(递归+非递归实现)的主要内容,如果未能解决你的问题,请参考以下文章