单向链表的翻转

写作目的

    链表的翻转为Leetcode第206道题目, 题目的地址为: https://leetcode.com/problems/reverse-linked-list/, 最开始的时候还稍微小看了这道题目, 原以为一两分钟就搞定了, 但是实际的解答过程中居然花了笔者十来分钟。可能是自己太掉以轻心了, 闲来无事,就记录一下,望各位看官指正。

节点类

public class LinkedNode {
    private LinkedNode next;
    private int value;

    public LinkedNode() {
    }

    public LinkedNode(int value) {
        this.value = value;
    }
    // setter and getter
}

链表的设计

LinkedNode tail = new LinkedNode(3);
LinkedNode middle = new LinkedNode(2);
LinkedNode head = new LinkedNode(1);

middle.setNext(tail);
head.setNext(middle);

System.out.println("=============未翻转之前==============");

LinkedNode current = head;

do{
    System.out.println(current.getValue());
}while((current = current.getNext()) != null);

具体的翻转方法

public static LinkedNode reverseList(LinkedNode head) {
    /**
     * current为当前遍历的节点
     * prev为上一个节点, 因为在循环的过程中需要当前节点next设置为上一个节点
     */
    LinkedNode current = head, prev = null;

    while(null != current) {
        //临时存储下一个节点
        LinkedNode curr = current.getNext();

        //设置当前节点的下一个节点为上一个节点
        current.setNext(prev);

        // 将设置了下个节点的当前节点存储起来,以便下次循环使用
        prev = current;

        //将临时存储起来的下一个节点赋值为current, 以便下一次循环使用
        current = curr;
    }
    //返回最后一个节点, 也就是翻转之后的第一个节点
    return prev;
}

链表的设计以及打印翻转之后的链表

public static void main( String[] args ) {
    LinkedNode tail = new LinkedNode(3);
    LinkedNode middle = new LinkedNode(2);
    LinkedNode head = new LinkedNode(1);

    middle.setNext(tail);
    head.setNext(middle);

    System.out.println("=============未翻转之前==============");

    LinkedNode current = head;

    do{
        System.out.println(current.getValue());
    }while((current = current.getNext()) != null);

    System.out.println("=============翻转之后=================");

    LinkedNode h = reverseList(head);  //翻转

    LinkedNode curr = h;

    do{
        System.out.println(curr.getValue());
    }while((curr = curr.getNext()) != null);
}

Leetcode上执行的结果

Snipaste_2020-03-08_20-54-47.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容