单链表的反转

单链表的反转,每次循环需要四步骤。

  public ListNode reverse(ListNode head)
	{
		if(head == null || head.next == null)
		{
			return head;
		}
		ListNode pPre = head;
		ListNode pCurr = head.next;
		ListNode pNext = null;
		head.next = null;
		while(pCurr != null)
		{
			pNext = pCurr.next;
			pCurr.next = pPre;
			pPre = pCurr;
			pCurr = pNext;
		}
		return pPre;
	}
public static ListNode reverse(ListNode head)
{
	if(head == null || head.next == null)
	{
		return head;
	}
	ListNode pPre = new ListNode(0);
	pPre.next = head;
	ListNode pCurr = head, pNext = null;
	while(pCurr != null)
	{
		pNext = pCurr.next;
		pCurr.next = pPre;
		pPre = pCurr;
		pCurr = pNext;
	}
	head.next = null;//head最后再赋值为null
	return pPre;
}

  

原文地址:https://www.cnblogs.com/masterlibin/p/5630131.html