1. 程式人生 > >反轉連結串列(在原連結串列進行操作,不開闢新空間. O(N)

反轉連結串列(在原連結串列進行操作,不開闢新空間. O(N)

//定義一個函式,輸入一個連結串列的頭節點,反轉該連結串列並輸出反轉後連結串列的頭節點。
ListNode* ReverseList(ListNode* pHead) 
{
	if ( NULL == pHead || NULL == pHead->next )//連結串列為空和連結串列只有一個結點在這個語句進行處理
		return pHead;
	
	ListNode* pPrev = NULL;
	ListNode* pCur = pHead;
	ListNode* pNext = pHead->next;
        
	while ( NULL != pNext ){
		pNext = pCur->next;
		pCur->next = pPrev;
            
		pPrev = pCur;
		pCur = pNext;
	}
	
	return pPrev;
}