博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode — reverse-linked-list
阅读量:6982 次
发布时间:2019-06-27

本文共 2458 字,大约阅读时间需要 8 分钟。

/** * Source : https://leetcode.com/problems/reverse-linked-list/ * * * Reverse a singly linked list. * * click to show more hints. * * Hint: * A linked list can be reversed either iteratively or recursively. Could you implement both? */public class ReverseLinkedList {    /**     *     * 反转单向链表     *     * 使用迭代的方法     *     * @param head     * @return     */    public Node reverseByIterative (Node head) {        Node pre = null;        while (head != null) {            Node next = head.next;            head.next = pre;            pre = head;            head = next;        }        return pre;    }    /**     * 使用递归     *     * @param head     * @return     */    public Node reverseByRecursion (Node head, Node pre) {        if (head == null) {            return head;        }        if (head.next == null) {            head.next = pre;            return head;        }        Node next = head.next;        head.next = pre;        pre = head;        return reverseByRecursion(next, pre);    }    private static class Node {        int value;        Node next;        @Override        public String toString() {            return "Node{" +                    "value=" + value +                    ", next=" + (next == null ? "" : next.value) +                    '}';        }    }    private static void print (Node node) {        while (node != null) {            System.out.println(node);            node = node.next;        }        System.out.println();    }    public Node createList (int[] arr) {        if (arr.length == 0) {            return null;        }        Node head = new Node();        head.value = arr[0];        Node pointer = head;        for (int i = 1; i < arr.length; i++) {            Node node = new Node();            node.value = arr[i];            pointer.next = node;            pointer = pointer.next;        }        return head;    }    public static void main(String[] args) {        ReverseLinkedList reverseLinkedList = new ReverseLinkedList();        print(reverseLinkedList.reverseByIterative(reverseLinkedList.createList(new int[]{1,2,3,4})));        print(reverseLinkedList.reverseByIterative(reverseLinkedList.createList(new int[]{})));        print(reverseLinkedList.reverseByRecursion(reverseLinkedList.createList(new int[]{1,2,3,4}), null));        print(reverseLinkedList.reverseByRecursion(reverseLinkedList.createList(new int[]{}), null));    }}

转载于:https://www.cnblogs.com/sunshine-2015/p/7774920.html

你可能感兴趣的文章
Javascript中的字符串链接和Array.join()方法时间效率对比
查看>>
为什么用Immutable.js代替普通js对象?
查看>>
Ossim系统常见测试方法
查看>>
创业那些年,我们一起走过的坑
查看>>
Oracle软件的美学变迁
查看>>
HttpServlet中getAllDeclaredMethods()方法
查看>>
面试题2:二维数组中的查找
查看>>
文件上传的渐进式增强
查看>>
leetcode -- Sort Colors
查看>>
C#中使用自定义的纸张大小
查看>>
1z0-052 q209_3
查看>>
行测题哦
查看>>
JavaScript Window Navigator 浏览器本身的信息
查看>>
使用Android Ant在编译时混淆
查看>>
通过Servlet 将服务器硬盘图片 展示到浏览器
查看>>
linux_nand_driver
查看>>
语义化的软件版本号规则,你是否真的了解软件的版本号
查看>>
[通俗易懂]理解“委托”
查看>>
sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)...
查看>>
xocodebulid 自动化打包 解决提示 ld: library not found for -lPods 问题
查看>>