美文网首页
链表相邻元素翻转

链表相邻元素翻转

作者: 小码弟 | 来源:发表于2018-10-14 11:07 被阅读0次

    如题

    思路:第一反应就是交换相邻两个节点的数据域,容易实现。但应记住第二种方法:交换指针域实现交换,如果链表有偶数个节点,交换相邻节点;如果有奇数个节点,交换除最后一个节点之外的其他相邻节点。


    Snip20181014_2.png
    void Reverse(LinkList head)
    {
      if(head == NULL || head->next == NULL)
        return false;
    
      LNode* pre = head;
      LNode* cur = head->next;
      LNode* next = NULL;
      
      while(cur && cur->next)
      {
        next = cur->next->next; // 1)
        pre->next = cur->next;  // 2)
        cur->next->next = cur;  // 3)
        cur->next = next; // 4)
        pre = cur;
        cur = next;
      }
    }
    

    需要一次遍历:T(n) = O(n) , 空间=O(1)

    相关文章

      网友评论

          本文标题:链表相邻元素翻转

          本文链接:https://www.haomeiwen.com/subject/earzaftx.html