题目:输入一个链表,反转链表后,输出新链表的表头。
设两个指针:指针pre指向null,cur指向pHead头节点
遍历链表(也就是cur不为空时),先用一个临时的指针变量temp指向cur的next,然后将cur的next指向pre,
pre和cur都向前走一位,走到最后,cur指向null,pre指向最后一个节点(这时也就是链表反转后的头节点)。
下图为开始和结束时的情况:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode * pre = NULL;//指针pre指向NULL,cur指向pHead头节点
ListNode * cur = pHead;
while(cur!=NULL) { //遍历链表
//将链表的指针反转
ListNode *temp=cur->next;
cur->next=pre;
pre=cur;//pre和cur向前进一位
cur=temp;
}
return pre;
}
};