美文网首页
1-b.链表逆序2

1-b.链表逆序2

作者: 编程半岛 | 来源:发表于2018-06-05 21:28 被阅读11次

已知链表头结点指针head,将链表从位置m到n逆序。(不可申请额外空间)

解题思路:




思考:最终结果应该返回哪个节点? 如果m==1时,有什么特殊?
如果m==1时,返回new_head结点。

关键代码:

ListNode* reverseBetweenM2N(ListNode* head, int m, int n)
{
    int change_len = n - m + 1;         // 计算需要逆置的节点个数
    ListNode* pre_head = NULL;          // 初始化开始逆置的节点的前驱
    ListNode* result = head;            // 最终转换后的链表头节点,非特殊情况即为head
    while( head && --m)                 // 将head先前移动m-1个位置
    {
       pre_head = head;                 // 记录head的前驱:pre_head
       head = head->next;
    }
    ListNode* modify_list_tail = head;  // 将modify_list_tail指向当前的head,即逆置后的链表尾
    ListNode* new_head = NULL;
    while( head && change_len )         // 逆置change_len个节点
    {
        ListNode* next = head->next;
        head->next = new_head;
        new_head = head;
        head = next;
        change_len--;
    }
    modify_list_tail->next = head;      // 连接逆置后的链表尾与逆置段的后一个节点
    if ( pre_head )                     // 如果pre_head不为空,说明不是从第一个节点开始逆置的
    {
        pre_head->next = new_head;      // 连接pre_head与逆置后的头节点
    }
    else
    {
        result = new_head;              // 如果pre_head为空,说明m==1,从第一个节点开始逆置,结果即为逆置后的头节点
    }
}

完成版:
c++版本

相关文章

  • 1-b.链表逆序2

    已知链表头结点指针head,将链表从位置m到n逆序。(不可申请额外空间) 解题思路: 思考:最终结果应该返回哪个节...

  • Python 将链表逆序

    说明:链表逆序,是将链表中的单向链表逆序,双向链表逆序和正序都是一样的,所以没有任何意义。 代码: class N...

  • 4. 链表

    链表题目是有套路的,如下4个方法: 链表逆序 (n个节点进行逆序,实际上循环进行n-1次)2个指针 (拆分、拼接、...

  • 2.单链表

    该部分包含以下内容-单链表的增删改查-计算链表长度-逆序链表-寻找(删除)链表倒数第K个元素-逆序打印链表(使用栈)

  • LeetCode 2. Add Two Numbers

    单链表逆序相加

  • 面试常考的链表操作

    1、链表的结构 2、链表的逆序 3、找出倒数第k个 4、找出中间元素 5、判断链表是否有环

  • 链表(Java)

    链表常见的操作: 1、插入节点(头插、尾插)2、删除节点3、获取链表长度4、逆序打印5、反转链表6、判断链表是否有...

  • 链表逆序输出数值(并且不能改变链表结构)

    链表逆序输出数值 创建一个链表之后,翻转该链表返回一个链表,该链表由node1->node2->node3变成no...

  • 链表逆序

    定义ListNode节点结构体 例题:链表链接 LeetCode 206. Reverse Linked Lis...

  • 链表逆序

    -(void)reverse(node *head) { node*per,; node *current = h...

网友评论

      本文标题:1-b.链表逆序2

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