分别用递归和循环两种方式实现
public class ListNode {
int num;
ListNode next;
}
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode firstNode = head;
ListNode secondNode = head.next;
while(secondNode.next != null) {
ListNode tmp = seconNode.next;
secondNode.next = firstNode;
firstNode = secondNode;
secondNode = tmp;
}
seconNode.next = firstNode;
return secondNode;
}
public ListNode reverseList1(ListNode head) {
if (head == null || head.next == null) {
return head;
}
return reverseNode(head, head.next)
}
private ListNode reverseNode(ListNode first, ListNode second) {
if (second.next == null) {
second.next = first;
return;
}
ListNode tmpNext = second.next;
second.next = first;
return reverseNode(second, tmpNext);
}