*** 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
};