15. 反转链表
题目
输入一个链表,反转链表后,输出新链表的表头。
解题思路
假设当前指针 i 指向链表中第 i 个结点;指针 j 指向第 i-1 个结点,0~i-1为已反转部分;指针 k 指向 i+1 个结点,i+1 至链表尾为尚未反转的节点。
将 i 节点next 指向 j,将三个指针向前移一位。
重复以上操作直至 i 指向 NULL。
代码实现
public ListNode ReverseList(ListNode head) {
if (head == null) {
return null;
}
ListNode p = head;
ListNode q = head.next;
ListNode nHead = null;
while (q != null) {
p.next = nHead;
nHead = p;
p = q;
q = q.next;
}
p.next = nHead;
return p;
}