题目描述
输入一个链表,反转链表后,输出链表的所有元素。
解法:逆转指针:将每个结点的指向翻转过来,原来指向后一结点的,现在指向前一个结点。
注:为防止链表断开,需要设置3个指针,pCurr:当前节点,pPre:前一个节点,pNext:下一个节点
代码如下:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead)
{
ListNode *pReHead=NULL; //反转链表的头结点
ListNode *pCurr=pHead; //当前节点
ListNode *pPrev=NULL; //当前节点的前一个节点
ListNode *pNext=pCurr->next; //当前节点的下一个节点
while(pCurr!=NULL)
{
if(pNext==NULL)
pReHead=pCurr;
pCurr->next=pPrev; //反转
pPrev=pCurr; //节点更新
pCurr=pNext; //节点更新
pNext=pNext->next; //节点更新
}
return pReHead;
}
};