题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList
先存入数组再将数组逆序打印
我的思路是将链表内容先存到一个中间数组,再将这个中间数组逆序放入结果数组中(也可以直接进行数组翻转)
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function printListFromTailToHead(head)
{
var temp = []; //中间数组
var result = []; //结果数组
var currentNode = head;
//先将链表内容存入中间数组
while(currentNode){
temp.push(currentNode.val);
currentNode = currentNode.next;
}
//将中间数组的内容逆序放入结果数组中
for(var i = temp.length - 1; i >= 0; i--){
result.push(temp[i]);
}
return result;
}
在其他地方学习了另外两种方法
- 利用栈先进后出特性
- 利用递归
利用栈先进后出特性
利用unshift()方法将链表元素放入数组中,unshift会在数组前方插入