设两个指针:指针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; } };