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;
}


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