题目描述
输入一个链表,从尾到头打印链表每个节点的值。
分两次遍历,第一次遍历计算链表长度确定输出数组的长度,第二次遍历把节点值从数组末尾往前放入。
代码实现:
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
int num = 0; //节点数
ListNode head = listNode;//头节点
ArrayList<Integer> list = new ArrayList<Integer>();
//第一次遍历链表取得节点数
while(listNode != null){
num++;
list.add(0);
listNode = listNode.next;
}
//将节点值从后往前放入数组
for(int i = num-1; i >= 0; i--){
list.set(i,head.val);
head = head.next;
}
return list;
}