题目描述 :
输入一个链表,反转链表后,输出新链表的表头。(注意: 题目未告知无头节点还是有头节点,最终测试得知为无头节点)
主要思想 :
public static ListNode ReverseList(ListNode head) {
if(head == null ){
return null;
}
if (head.next == null)
return head;
ListNode P = head.next;
head.next= null;
ListNode S = null;
while (P != null) {
S = P.next; //保存P下一节点信息,防止之后的节点丢失
P.next = head;
head = P;
P = S;
}
return head;
}
注意点 :
- 考虑特殊情况1,当仅有head节点时,应返回head节点
- 考虑特殊情况2,当链表为空时,应返回null