Reverse a singly linked list.

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


二、解题报告

逆转一个单链表一般有 迭代 和 递归 两种方法。

1、迭代法

遍历该单链表,将节点一个一个摘下来,采用 头插法 插入另一条链表:

ListNode* reverseList(ListNode* head) {
    ListNode node(0);
    ListNode* L = &node;
    L->next = NULL;

    while(head!=NULL)
    {
        ListNode* q = head->next;
        head->next = L->next;
        L->next = head;  
        head = q;
    }

    return L->next;
}

2、递归法

如果只有一个节点,直接返回。否则,将当前链表 节点后面。

ListNode* reverseList(ListNode* head) {
    if(head==NULL || head->next==NULL)
        return head;

    ListNode* q = head->next;
    ListNode* new_head = reverseList(q);
    head->next = NULL;
    q->next = head;

    return new_head;
}







LeetCode答案源代码:https://github.com/SongLee24/LeetCode

相关文章:

  • 2022-02-05
  • 2021-09-03
  • 2022-12-23
  • 2022-12-23
  • 2021-09-07
猜你喜欢
  • 2021-06-13
  • 2021-12-06
  • 2021-08-30
  • 2021-08-20
  • 2021-10-13
  • 2021-12-16
  • 2021-06-24
  • 2021-12-15
相关资源
相似解决方案