题目:
Reverse a singly linked list.
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; } };
时间: 2024-10-13 22:20:33