思路: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; }
加头结点有什么好处?
答:操作一致性。想想在某个元素前插入一个新元素、或者想想删除某个元素。