非常厉害的列表逆置方法:
//逆置单链表,原地操作,只需要遍历一遍
private ListNode reverse(ListNode head)
{
ListNode pre = null;
ListNode cur = head;
while(cur!=null)
{
ListNode temp = cur.next;
cur.next = pre;
pre = cur;
cur = temp;
}
return pre;
}
第一步:保留temp节点
第二步:下一节点指向pre
第三步:pre后移
第四步:当前节点(cur)后移
一次遍历只能置换一个节点,如:第一次置换首节点和空,第二次置换首节点和第二个节点,一次类推