Reverse Linked List
Description
Reverse a singly linked list.
Analysis
从这道题这么简洁的表述中,不难看出这道题的意思就是给出一个链表,让我们把链表倒置。
我的做法就是新建一个链表指针pre,t。
每一次将pre变成当前指针的前一个指针,用t记录当前指针的下一个指针。
然后把当前指针的next变成pre。
然后更新pre成当前指针,而n变成t。
继续这个过程一直到倒置结束。
Code
/**
* 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) {
if(head == NULL) return head;
if(head->next == NULL) return head;
ListNode* t = head;
ListNode* pre = head;
ListNode* n = head->next;
t->next = NULL;
while(n!=NULL){
t = n->next;
n->next = pre;
pre = n;
n = t;
}
return pre;
}
};