从尾到头打印链表

Posted baishouzu

tags:

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

链表不能像数组一样直接进行随机读取,只能从头结点开始打印链表。

题解:要求从尾到头打印链表,那么首先就是要找到链表的整体长度,通过长度创建数组,然后将链表的第一个节点的值放入数组的最后一个位置,最后的数组正序的值就是链表倒叙的值。

分析:整个题目中会对链表进行两次遍历,需要的额外空间就是链表的长度,因此时间为O(n),空间为O(n)。

完整代码如下:

 1 /**
 2  * @author: wooch
 3  * @create: 2020/02/21
 4  */
 5 
 6 /**
 7  * 面试题06. 从尾到头打印链表
 8  * 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
 9  */
10 public class P06_ReversePrint {
11     public int[] reversePrint(ListNode head) {
12         if (head == null) {
13             return new int[0];
14         }
15         int len = 0;
16         ListNode p = head;
17         while (p != null) {
18             len++;
19             p = p.next;
20         }
21         int[] res = new int[len];
22         p = head;
23         len--;
24         while (p != null) {
25             res[len--] = p.val;
26             p = p.next;
27         }
28         return res;
29     }
30 }

 

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

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

从尾到头打印链表

《剑指Offer—— 06. 从尾到头打印链表》代码

从尾到头打印链表

从尾到头打印链表

[编程题] 从尾到头打印链表