链表逆置:是将形如 1 →2 →3 →4 →5 →NULL 的链表逆置改为:5 →4 →3 →2 →1 →NULL
对于这个问题,有两种方法:
1、采用三个指针:将整个链表翻转!!
时间复杂度O(N^2) 嵌套循环
具体思路如下:首先要先找到新的头结点,则需要一个指针pCur1遍历链表,找到原尾结点,将其设置为新的头结点,因为我们需要从原头结点开始遍历,则需要一个pOldHead指针来保存原头结点,现在在找一个pCur2来保存新链表的最后一个结点,每次遍历前将pCur1更新指向pOldHead,当pCur1的next恰好等于pCur2结点时,将pCur1尾插至pCur2,再更新pCur2和pCur1,最后当pOldHead等于pCur2时,逆置完毕,再将pCur2的next赋空即可!

代码如下:
void ReverseSList(PNode* pHead)
{
assert(*pHead); //参数检测
PNode pOldHead = *pHead;
PNode pCur2;
PNode pCur1;
if (NULL == *pHead

3662

被折叠的 条评论
为什么被折叠?



