题目
反转一个单链表。
示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
思路
采用双指针法,一个cur指针指向头结点head,一个pre指针初始化为null,然后进行翻转,其中我们需要定义一个临时指针temp保存cur->next,防止断链,接下来直接反转,让 cur->next指向pre,接着移动pre到cur的位置,而cur移动到temp的位置
C++代码
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* temp;//用于存储除cur后面的剩余链表( cur->next )
ListNode* pre = NULL;
ListNode* cur = head;
while(cur){
temp = cur->next;
cur->next = pre;
pre = cur;
cur = temp;
}
return pre;
}
};