从头到尾打印链表

Posted 小布丁value

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从头到尾打印链表相关的知识,希望对你有一定的参考价值。

从头到尾打印链表


方法一:放入栈中,先进后出

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public int[] reversePrint(ListNode head) {
        Stack<ListNode> stack = new Stack<ListNode>();
        ListNode temp = head;
        while (temp != null) {
            stack.push(temp);
            temp = temp.next;
        }
        int size = stack.size();
        int[] print = new int[size];
        for (int i = 0; i < size; i++) {
            print[i] = stack.pop().val;
        }
        return print;
    }
}

方法二:递归打印

class Solution {
    ArrayList<Integer> list = new ArrayList<>();
    public int[] reversePrint(ListNode head) {
        recur(head);
        int [] res=new int[list.size()];
        for(int i=0;i<res.length;i++){
            res[i]=list.get(i);
        }
        return res;
    }
    public  void recur(ListNode head){
        if(head==null) return ;
        recur(head.next);
        list.add(head.val);
    }
}

两种方法本质上是一样的,栈的原理就是递归。
时间复杂度O(N),空间复杂度O(n)都不太好
可以试着反转链表打印,可以使空间复杂度讲到O(1);

以上是关于从头到尾打印链表的主要内容,如果未能解决你的问题,请参考以下文章

链表--从头到尾打印链表

从头到尾打印链表(剑指offer_6)

从尾到头打印链表-剑指Offer

从头到尾打印链表

从尾到头打印链表

3.从头到尾打印链表