[剑指Offer]24-反转链表
题目链接
题意
输入一个链表,反转链表后,输出新链表的表头。
解题思路
每次要记录三个指针,当前节点,前面节点,后面节点。
从前往后反转,即可。
代码
/*struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if(!pHead){
return nullptr;
}
if(!pHead->next){
return pHead;
}
ListNode* pCurrent;
ListNode* pBefore;
ListNode* pBehind;
pCurrent=pHead;
while(pCurrent->next){
if(pCurrent==pHead){
pBefore=nullptr;
}
//更新当前节点
pBehind=pCurrent->next;
pCurrent->next=pBefore;
//初始化下一个节点
pBefore=pCurrent;
pCurrent=pBehind;
}
pCurrent->next=pBefore;
return pCurrent;
}
};
posted on 2019-03-08 11:55 coding_gaga 阅读(94) 评论(0) 编辑 收藏 举报