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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章