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;
}
发布了541 篇原创文章 · 获赞 1067 · 访问量 285万+

猜你喜欢

转载自blog.csdn.net/zinss26914/article/details/94601571