题目:
输入一个链表,反转链表后,输出反转链表的头结点。
链接:
剑指Offer(第2版):P142
思路标签:
- 数据结构:链表
解答:
1. C++
- 为了保证链表不断,我们需要知道每次操作的当前节点、前一节点以及下一节点,所以需要有三个指针分别指示;
- 返回的反转链表的头结点为遍历结束时的当前节点。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode* pReversedHead = nullptr;
ListNode* pPre = nullptr;
ListNode* pNode = pHead;
while(pNode != nullptr){
ListNode* pNext = pNode->next;
if(pNext == nullptr)
pReversedHead = pNode;
pNode->next = pPre;
pPre = pNode;
pNode = pNext;
}
return pReversedHead;
}
};