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面试题目-单链表翻转(递归+非递归实现)的主要内容,如果未能解决你的问题,请参考以下文章

p9 翻转单链表(leetcode206)

206.Reverse Linked List

理解单链表的反转(java实现)

python实现单链表翻转

链表翻转的图文讲解(递归与迭代两种实现)

链表翻转的图文讲解(递归与迭代两种实现)