Reverse a singly linked list.
// method 1: 逐个节点逆转
public ListNode reverseList1(ListNode head) {
if (head == null || head.next == null)
return head;
ListNode prev = head;
ListNode curr = prev.next;
prev.next = null; // miss this line will lead to daed loop when print the result list
ListNode next;
while (curr != null) {
next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}
return prev;
}
// method 2: 依次将后面节点提前
public ListNode reverseList(ListNode head) {
if (head == null)
return head;
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode p = head;
ListNode q = null;
while (p.next != null) {
q = p.next;
p.next = q.next;
q.next = dummy.next;
dummy.next = q;
}
return dummy.next;
}
本文介绍了两种逆转链表的方法:一种是逐个节点逆转,另一种是依次将后面节点提前。详细步骤和代码实现帮助理解链表操作。
442

被折叠的 条评论
为什么被折叠?



