反转链表

反转链表

/*
public class ListNode {
int val;
ListNode next = null;    
ListNode(int val) {
        this.val = val;
}
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        if(head == null){ // 判断头节点是否为空
            return null;
        }
        ListNode reverseListHead = null; // 设置反转链表的头节点
        ListNode temp = null;
        ListNode pre = null;
        ListNode current = head; // 当前节点
        while(current!=null){
            temp = current.next; // temp等于当前节点的下一个节点
            current.next = pre; // 当前节点的下一个节点先赋值为空
            if(temp == null){ // 当当前节点的下一个节点为空时 就说明当前节点是未反转链表的尾节点
                reverseListHead = current; // 把当前节点赋值给反转链表的头节点
            }
            pre = current; // 把当前节点赋值给pre 这样当下一次循环的时候,当前节点的下一个节点就变为了当前节点 就相当于反转了
            current = temp; // 这里不能写为current=current.next 因为current.next已经被修改了
        }
        return reverseListHead;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 目录 技术一面(23问) 技术二面(3大块) 性能优化(21点) 项目实战(34块) JAVA方向技术考察点(15...
    Java架构学习者阅读 3,517评论 1 0
  • 从尾到头打印链表 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList
    一个学霸阅读 1,450评论 0 0
  • 创建进程 在Linux操作系统中,当我们创建一个进程时;操作系统会对当前进程进行复制。 复制一份task_stru...
    小程有话说阅读 1,441评论 0 1
  • 教育孩子的六个误区: 1.“不让孩子输在起跑线上。”盲从的让孩子参加各种补习班。每个孩子都有不同的特质,他们需要的...
    感恩一切_e707阅读 1,436评论 0 0
  • 亲爱的陈老师: 您好!我是李相燏,现就读于洛阳市第二外国语学校初一(14)班。 来二外已经大半个月了...
    巴山夜雨_b45f阅读 3,339评论 0 1

友情链接更多精彩内容