JS 从尾到头打印链表

293 阅读1分钟

*** JS 从尾到头打印链表 示例 1:

输入: head = [1,3,2]
输出: [2,3,1]

  分析:

实际上是求链表的反转,以数组的形式输出。

方法一:通过不停调换链表 next 指针,直至链表结束,再以数组的形式输出。

详情可见前面文章 JS 实现链表反转

代码:

var reversePrint = function(head) {
    let current = head
    let pre = null
    while(current) {
        const next = current.next
        current.next = pre
        pre = current
        current = next
    }
    const res = []
    while(pre) {
      res.push(pre.val)
      pre = pre.next
    }
    return res
}

方法二:将链表按照指针顺序遍历,存放到数组当中,再将数组倒置输出

数组的反转可见前面文章: JS反转数组

代码:

var reversePrint = function(head) {
    let res = []
    let p = head
    while(p) {
        res.push(p.val)
        p = p.next
    }
    let left = 0
    let right = res.length - 1
    while(left < right) {
        let temp = res[left]
        res[left] = res[right]
        res[right] = temp
        left++
        right--
    }
    return res
};