链表:反转链表

反转链表

反转链表,常用的方法有迭代,栈反转,递归反转。

迭代

比如,现有链表1->2->3->4->5,
首先,从第一个节点开始,反转,将1->null,
接着向下一个节点2,迭代,反转,将2->1,
接着向下一个节点3,迭代,反转,将3->2,也就是变成了3->2->1,依此类推。

关键的几点:

1.找到当前节点、上一个节点;
2.反转。将当前节点指向上一个节点,形成反转;
3.迭代。向后迭代,找到新的"当前节点"、"上一个节点"。

如下:

public ListNode reserveListNode(ListNode head)  {
    //上一个节点
	ListNode prev=null;
    //当前节点
	ListNode curr=head;
    //当前节点不为null,就循环
    while( curr!=null) {
        //先记住下一个节点
		ListNode nextNode= curr.next;    

        //反转。将当前节点指向上一个节点,形成反转
		curr.next= prev;              
        //向后迭代。
        //迭代之后,新的上一个节点 pre,就是之前的"当前节点" curr
        //迭代之后,新的当前节点 curr,就是之前的"下一个节点" nextNode
		prev= curr;                    
		curr= nextNode;              
	}
    //最后prev会变成反转后的头节点,返回prev
     return prev;
}

相关推荐

  1. 2024-02-07 10:26:02       48 阅读
  2. leetcode-

    2024-02-07 10:26:02       61 阅读
  3. 1

    2024-02-07 10:26:02       44 阅读
  4. 206.

    2024-02-07 10:26:02       35 阅读
  5. 【算法】

    2024-02-07 10:26:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-07 10:26:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-07 10:26:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-07 10:26:02       82 阅读
  4. Python语言-面向对象

    2024-02-07 10:26:02       91 阅读

热门阅读

  1. C#面:using 关键字

    2024-02-07 10:26:02       62 阅读
  2. 13.Swift元组

    2024-02-07 10:26:02       50 阅读
  3. SF相关1111

    2024-02-07 10:26:02       66 阅读
  4. 【实验2】在Hadoop平台上部署WordCount程序

    2024-02-07 10:26:02       53 阅读
  5. 华为Eth-Trunk级联堆叠接入IPTV网络部署案例

    2024-02-07 10:26:02       41 阅读
  6. Ubuntu修改用户名及密码

    2024-02-07 10:26:02       58 阅读
  7. Docker Compose

    2024-02-07 10:26:02       56 阅读