自定义链表 ListNode 类

public class ListNode {
    int val;
    ListNode next;

    ListNode(int x) {
        val = x;
    }
}

将链表转换成数组

//将链表转换成数组
public class Test1 {
    public static void main(String[] args) {
        Test1 test1 = new Test1();
        int[] a = {1, 9, 9, 9, 9, 9, 9, 9, 9, 9};
        ListNode l1 = test1.arrayToListNode(a);
        test1.printListNode(l1);

    }

    //数组转换成链表
    public ListNode arrayToListNode(int[] s) {
        ListNode root = new ListNode(s[0]);//生成链表的根节点,并将数组的第一个元素的值赋给链表的根节点
        ListNode other = root;//生成另一个节点,并让other指向root节点,other在此作为一个临时变量,相当于指针
        for (int i = 1; i < s.length; i++) {//由于已给root赋值,所以i从1开始
            ListNode temp = new ListNode(s[i]);//每循环一次生成一个新的节点,并给当前节点赋值
            other.next = temp;//将other的下一个节点指向生成的新的节点
            other = temp;//将other指向最后一个节点(other的下一个节点)  other=other.getNext();
        }
        return root;
    }

    /**
     * 遍历一个链表
     */
    public void printListNode(ListNode l) {
        while (l != null) {
            System.out.print(l.val + " ");
            l = l.next;
        }
    }
}

将数组转换成链表

//将链表转换成数组
public class Test2 {
    public static void main(String[] args) {
        Test2 test2 = new Test2();
        ListNode l1 = new ListNode(0);
        l1.next = new ListNode(1);
        l1.next.next = new ListNode(2);
        l1.next.next.next = new ListNode(3);
        l1.next.next.next.next = new ListNode(4);

        test2.printArrays(test2.listNodeToArray(l1));
    }

    //输出数组
    public void printArrays(int[] ints) {
        for (int x : ints) {
            System.out.print(x + " ");
        }
    }

    //将链表转换成数组
    public int[] listNodeToArray(ListNode l) {
        int size = listNodeSize(l);
        int[] ints = new int[size];
        int index = 0;
        while (l != null) {
            ints[index] = l.val;
            l = l.next;
            index++;
        }
        return ints;
    }

    //求链表的长度
    public int listNodeSize(ListNode l) {
        int size = 0;
        while (l != null) {
            size++;
            l = l.next;
        }
        return size;
    }

    //遍历一个链表
    public void printListNode(ListNode l) {
        while (l != null) {
            System.out.print(l.val + " ");
            l = l.next;
        }
    }
}