单链表的反转

/**
 * @date: 2018/8/11
 * @description: leetcode第206题 翻转单链表
 * 地址:https://leetcode-cn.com/problems/reverse-linked-list/description/
 */
public class ReverseList{
    
    //链表结构
    public static class ListNode{
        int val;
        ListNode next;
        ListNode(int val){
            this.val = val;
        }
    }
    
    public ListNode reverseList(ListNode head){
        
        if(head == null){
            return null;
        }

        ListNode newHead = null;//用于遍历的指针
        while(head != null){//遍历原链表,每遍历一个节点就将其反转
            ListNode next = head.next;//对下一个要遍历的节点进行备份
            head.next = newHead;//反转
            newHead = head;
            head = next;
        }

        return newHead;
    }

    //测试函数
    public static void main(String[] args){
        ListNode head = new ListNode(1);
        head.next = new ListNode(2);
        head.next.next = new ListNode(3);
        head.next.next.next = new ListNode(4);
        head.next.next.next.next = new ListNode(5);
        printHead(head);

        System.out.println();

        System.out.print("反转后:");
        ListNode newHead = new ReverseList().reverseList(head);
        printHead(newHead);
    }

    //打印链表的函数
    private static void printHead(ListNode head){

        while(head != null){
            System.out.print(head.val + "->");
            head = head.next;
        }
        System.out.print("null");
    }
}

 

运行结果

全部评论

相关推荐

09-24 18:30
已编辑
长春工业大学 产品经理
小肥罗:HR就是好人的缩写哈哈哈哈
点赞 评论 收藏
分享
10-30 19:23
已编辑
山东大学(威海) C++
牛至超人:我了个雷 1.实习经历写太长了吧,精简一点,你写那么老多,面试官看着都烦 2.项目经历你放俩竞赛干啥单独拿出来写上几等奖就行了呗 3.一大雷点就是项目经历里的那个课程设计,大家都知道课程设计巨水,不要写课程设计,换一个名字,就叫学生管理系统,面试官问就说是自己做的项目,不要提课程设计的事 4.那个交流经历,简化一下塞到最上面的教育经历里就行了 5.简历尽量一页纸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务