# 题目描述

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

例如:

输入 2 -> 3 -> 4
输出 [4, 3, 2]

你可以将输入的链表用js的结构来写,如:

{ val: 2, next: { val: 3, next: { val: 4, next: null } } }

# 解题思路

  1. 链表的结构为:val属性存储当前的值,next属性存储下一个节点的引用;
  2. 定义一个空数组,将每个节点的val推进数组中,并不断查询next是否存在

# coding

直接使用while循环就可以实现,当然你也可以使用递归的方式。

/**
 * Definition for singly-linked list.
 */
function ListNode(val) {
    this.val = val;
    this.next = null;
}
/**
* 把链表转换为数组
* @param {ListNode} node
*/
function transformListToArray(node) {
    let array = []
    while (node) {
        array.push(node.val)
        node = node.next
    }
    return array
}

测试代码

const list = { val: 2, next: { val: 3, next: { val: 4, next: null } } }
transformListToArray(list)
// [4, 3, 2]
阅读全文