剑指Offer解题 链表反序

剑指Offer

题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList

**题解:**

1、javascript

反序输出,就相当于先进后出,所以构建栈,将链表结构存入数组中,然后利用Javascipt中的API反序。
/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/
function printListFromTailToHead(head)
{
    // write code here
    var arrayList = [];
    let node = head;
    while (node){
        arrayList.push(node.val);
        node = node.next;
    }
    return arrayList.reverse();
}

2、Java

(1)通过栈的方法,利用arraylist 的add 的方法,在索引0的位置添加值,实现链表的反序输出
/**
*    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) {
        ArrayList<Integer> list = new ArrayList<>();
        ListNode temp = listNode;
        while(temp !=null){
            list.add(0,temp.val);
            temp = temp.next;
        }
        return list;
    }
}

(2)递归

import java.util.ArrayList;
public class Solution {
     ArrayList<Integer> list = new ArrayList<>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(listNode!=null){
            printListFromTailToHead(listNode.next);
            list.add(listNode.val);
        }
        return list;
    }
}

你可能感兴趣的:(算法,算法,数据结构,链表)