现在的位置: 首页 > 综合 > 正文

链表反转

2019年08月30日 ⁄ 综合 ⁄ 共 422字 ⁄ 字号 评论关闭

思路:3个指针,后面两个指针控制改变链节的方向,最前面的指针用来前移。

void ReverseList(PNODE& pHead)
{
	PNODE pRet = NULL;
	PNODE pFirst = NULL;
	PNODE pSecond = NULL;
	PNODE pThird = NULL;

	if (pHead == NULL || pHead->pNext == NULL)
	{
		goto Exit0;
	}

	pFirst = pHead->pNext->pNext;
	pSecond = pHead->pNext;
	
	while (pFirst != NULL)
	{
		pSecond->pNext = pThird;
		pThird = pSecond;
		pSecond = pFirst;
		pFirst = pFirst->pNext;
	}

	pSecond->pNext = pThird;
	pHead->pNext = pSecond;

Exit0:
	return;
}

加头结点有什么好处?

答:操作一致性。想想在某个元素前插入一个新元素、或者想想删除某个元素。

【上篇】
【下篇】

抱歉!评论已关闭.