题目描述
输入一个链表,反转链表后,输出新链表的表头。
思路:
把结点挨个从链表上摘下来,做调整;这个调整过程需要两个指针辅助:newHead记录其前一个结点位置,好让该结点的next指针指向前一个结点,但是在指向前一个结点前需要用一个指针current记录后一个结点地址,避免结点丢失。
代码实现:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode* newHead = NULL;
while(pHead != NULL){
ListNode *current = pHead->next;
pHead->next = newHead;
newHead = pHead;
pHead = current;
}
return newHead;
}
};