题目链接
解题思路
- 不带头节点的头插法
- 首先创建一个
tmp
节点作为头节点 - 令
p = head
,q = head.next
,头插直到原链表为空 - 注意最后一个节点时,
q
为null
,没有next
成员变量
AC代码
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null)
return null;
ListNode p = head;
ListNode q = head.next;
ListNode tmp = new ListNode(-1);
while (p != null) {
//头插
p.next = tmp.next;
tmp.next = p;
//向后移动一个位置
p = q;
if (q != null)
q = q.next;
}
return tmp.next;
}
}