首页 > 代码库 > [LeetCode]206. Reverse Linked List 解题小结

[LeetCode]206. Reverse Linked List 解题小结

题目:

Reverse a singly linked list.

click to show more hints.

Hint:

A linked list can be reversed either iteratively or recursively. Could you implement both?

用循环来做

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */ /** * Reverse Iteratively */class Solution {public:    ListNode* reverseList(ListNode* head) {        ListNode* revHead = NULL;        ListNode* rev = head;                while(rev){            head = rev;            rev = rev->next;            head->next = revHead;            revHead = head;        }                return revHead;            }};

用递归来做:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */ /** * Reverse Iteratively */class Solution {public:    ListNode* reverseList(ListNode* head) {                if(!head || (!head->next))return head;        ListNode* node = reverseList(head->next);        head->next->next = head;        head->next = NULL;        return node;            }};

 

[LeetCode]206. Reverse Linked List 解题小结