链表相关算法题

Posted by violetks on April 5, 2021

第一题:从尾到头打印链表

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

// 示例1
输入:{1, 2, 3}
返回:[3, 2, 1]
// 示例2
输入:{67, 0, 24, 58}
返回:[58, 24, 0, 67]
// 定义链表的方法
function ListNode (x) {
  this.val = x;
  this.next = null;
}

分析:将链表的值 unshift 从头插入另一个数组里面。

function printListFromTailToHead (head) {
    var arr = [], pNode = head;
    while (pNode !== null) {
      arr.unshift(pNode.val);
      pNode = pNode.next;
    }
    return arr;
}
  • unshift(),向数组的开头添加一个或更多元素,并返回新的长度。
  • push(),把一个或多个元素添加到数组的尾部。