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;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值