反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
利用递归的方法解决反转问题,代码中注释已经很详尽了,代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
// 如果本身为NULL
if(head == NULL) return NULL;
// 返回已经倒置的链表头
if(head -> next == NULL) return head;
// 接收链表倒置的头
ListNode* demo = reverseList(head -> next);
head -> next -> next = head;
head -> next = NULL;
return demo;
}
};
/*作者:heroding
链接:https://leetcode-cn.com/problems/reverse-linked-list/solution/clian-biao-fan-zhuan-by-heroding-y1cm/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/