题目描述
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
思路:头插法。每次取下后面的节点插入到头节点。
链表反转
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public static ListNode reverseList(ListNode head) {
ListNode result = new ListNode(0); // 不能是 head.val 避免输入是空链表的情况
ListNode p = head;
ListNode r = null;
while(p != null){
r = p.next;
p.next = result.next;
result.next = p;
p = r;
}
result = result.next;
return result;
}
}
从尾到头输出链表(递归)
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> result = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode!=null){
this.printListFromTailToHead(listNode.next);
result.add(listNode.val);
}
return result;
}
}