输入一个链表,反转链表后,输出链表的所有元素。
链表反转的问题,就是在链表头加一个哨兵,然后不停的把后面的节点采用头插法加入。这种代码最起码也要背下来。
public class Solution {
public ListNode ReverseList(ListNode head) {
if (head == null) return null;
if (head.next==null) return head;
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pre = dummy;
ListNode last = pre.next;
ListNode cur = last.next;
while(cur != null){
last.next = cur.next;
cur.next = pre.next;
pre.next = cur;
cur = last.next;
}
return pre.next;
}
}