题目:给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。
画的不好看,将就一下。
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) { 构造方法
* this.val = val;
* }
* }
*/
public ListNode ReverseList (ListNode head) {
if(head == null)
return head;
// 最终返回的表头指针
ListNode result = null;
ListNode cur = head; // cur ----> {1,2,3,4} , cur.value = 1
while(cur != null){
ListNode last = cur.next; // last 永远指向cur的下一个结点
cur.next = result; // 关键: 当前结点next域指向前一个结点
result = cur;// 看图就明白了
cur = last;// 往后移
}
return result; // result最终会指向反向链表的首结点
}