这道题是我2017.11月底的时候百度面试的题。
以两个节点为单位,一个前面的节点,一个后面的节点。
开始的时候比较特殊,因为是后一个节点指向前一个节点,同时最后翻转的链表的尾部是NULL,所以一开始前面的节点是NULL。
需要临时保存第三个节点的指针。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* p=NULL;
ListNode* q=head;
while(q){
ListNode* temp=q->next;
q->next=p;
p=q;
q=temp;
}
return p;
}
};