1: /**
2: * Definition for singly-linked list.
3: * struct ListNode {
4: * int val;
5: * ListNode *next;
6: * ListNode(int x) : val(x), next(NULL) {}
7: * };
8: */
9: class Solution {
10: public:
11: ListNode* reverseList(ListNode* head) {
12: if (head == NULL || head->next == NULL) return head;
13: ListNode *prev = head, *cur = head->next;
14: prev->next = NULL;
15: while (cur) {
16: ListNode *tmp = cur->next;
17: cur->next = prev;
18: prev = cur;
19: cur = tmp;
20: }
21: return prev;
22: }
23: };
And here is the more concise one from top rated solution.
1: /**
2: * Definition for singly-linked list.
3: * struct ListNode {
4: * int val;
5: * ListNode *next;
6: * ListNode(int x) : val(x), next(NULL) {}
7: * };
8: */
9: class Solution {
10: public:
11: ListNode* reverseList(ListNode* head) {
12: ListNode *prev = NULL;
13: while (head) {
14: ListNode *tmp = head->next;
15: head->next = prev;
16: prev = head;
17: head = tmp;
18: }
19: return prev;
20: }
21: };
No comments:
Post a Comment