反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
这道题的思路是如果要反转链表 ,我们首先得要考虑三个位置,一个是前面得位置,我们叫它pre,一个是当下得,我们叫它head,一个是之后得,它的位置当然是 head->next啦 ,我们所要做的就是将当前的位置的next值指向pre即可,也就是 head->next=pre; 然后head依次往后移,移后呢 ,pre变成谁了呢,肯定是head啦 ,那么当前元素变成谁了呢,肯定是head->next 也就是 head=head->next了,不过第一次head->nex=pre时,head->next发生了改变,所以要让一个变量保存它
/**
* 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 *pre=nullptr;
while(head)
{
ListNode *temp=head->next;
head->next=pre;
pre=head;
head=temp;
}
return pre;
}
};