题目
题意:反转一个单链表。
示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
思路
不要新建链表,浪费空间
就是改变next方向就好。
这道题看动图就很容易理解了,
坑在于,循环条件的设置
双指针法
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* pre =NULL;
ListNode* cur =head;
while(cur){
ListNode* temp =cur->next; //最后一次循环,temp指向尾节点的下一个,即空,所以判断条件为cur非空
cur->next =pre;
pre =cur;
cur =temp;
}
return pre;
}
};