#打卡记录
前俩基础知识,没啥记录的。
反转链表的递归写法,反转的过程其实就是读取元素进栈的一个过程,读取完整个链表,出栈的顺序就是反转完的链表,可以借助栈实现,不用则可以用递归实现,如下所示
/**
* 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) {
// ListNode* revers = nullptr;
// ListNode* temp;
// ListNode* cur = head;
// while(cur != nullptr){
// temp = cur->next;
// cur->next = revers;
// revers = cur;
// cur = temp;
// }
// return revers;
if(head == nullptr || head->next == nullptr) return head;
ListNode* rever = reverseList(head->next);
head->next->next = head;
head->next = nullptr;
return rever;
}
};