LeetCode 206 單鏈表逆置

這是一道基本題  時隔一段時間後都值得練習一下


Reverse a singly linked list.

基本思路:設置三個指針,一個爲遍歷前驅pre(遊標一 先前指針) ,一個爲當前指針cur(遊標二 當前指針),另一個作爲保存後繼節點(後繼指針),保存下一個逆置後指向的位置。


代碼如下: 

ListNode* ListReverse(ListNode* L)
{
	if ((NULL == L) || (NULL == L->next))return L;  //邊界檢測
	ListNode* pPre = L;    //先前指針
	ListNode* pCur = pPre->next;  //當前指針
	ListNode* pNext = NULL;       //後繼指針
	while (pCur != NULL)
	{
		pNext = pCur->next;//有個規律 逆置操作 賦值完的變量下一句會被賦值
		pCur->next = pPre;
		pPre = pCur;
		pCur = pNext;
	}
	L->next = NULL;//沒有這句就構成環形鏈表 末端節點之前還指向頭部
	L = pPre;        //記錄下新的頭結點 沒有這句鏈表斷了
	return L;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章